Я заметил, что выполнение isin
в DataFrame, которое содержит типы данных datetime, где операнд представляет собой пустой DataFrame, генерирует значения даты и времени epoch (т. Е. 1970-01-01), вместо «Ложь». Кажется маловероятным, что это правильно?Pandas isin с пустым dataframe производит значение epoch для типа datetime вместо boolean
Следующий код демонстрирует это:
(панд = 0.19.2, NumPy = 1.12.0)
import pandas as pd
data = {'date': ['2014-05-01 18:47:05.069722', '2014-05-01 18:47:05.119994', '2014-05-02 18:47:05.178768']}
data2 = {'date': ['2014-05-01 18:47:05.069722', '2014-05-01 18:47:05.119994']}
df = pd.DataFrame(data, columns = ['date'])
df['date'] = pd.to_datetime(df['date'])
df2 = pd.DataFrame(data2, columns = ['date'])
df2['date'] = pd.to_datetime(df2['date'])
df3 = pd.DataFrame([], columns = ['date'])
df4 = pd.DataFrame()
print df.isin(df2)
print df.isin(df3)
print df.isin(df4)
Это выходы:
date
0 True
1 True
2 False
date
0 1970-01-01
1 1970-01-01
2 1970-01-01
date
0 1970-01-01
1 1970-01-01
2 1970-01-01
Я обычно планирующим список значений False вместо '1970-01-01'? Я заметил, что с пандами = 0.16.2 и NumPy = 1.9.2, df.isin(df3)
производит более ожидаемым:
date
0 False
1 False
2 False
Но df.isin(df4)
как предыдущий.
Это звучит как ошибка для меня. Я бы сообщил об этом разработчикам панд на https://github.com/pandas-dev/pandas – languitar