2017-02-22 8 views
1

私は、オペランドが空のDataFrameであるdatetime型を含むDataFrameにisinを実行すると、エポックのdatetime値)、 'False'の代わりに。これは正しいとは思わないでしょうか?空のデータフレームを持つPandas isinがbooleanの代わりにdatetime型のエポック値を生成する

次のコードは、このことを示しています

(パンダ= 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 

私は通常、リストを期待します'1970-01-01'の代わりにFalse値を使用しますか?私はパンダ= 0.16.2とnumpyの= 1.9.2で、df.isin(df3)がより期待作り出すことに気づく:

date 
0 False 
1 False 
2 False 

しかしdf.isin(df4)は、前のようです。

+0

これは私のバグのようです。私はhttps://github.com/pandas-dev/pandasのパンダ開発者に報告します – languitar

答えて

0

これは間違いなく私のバグのようです。 isin()in the source codeと表示されているようにDataFrame.eqを呼び出し、奇妙な動作はDataFrame.eq自体で再現可能です。私はあなたが今

、それは未解決の問題であることを上げてきましたし、それは今後のリリースで解決されるべき参照

>>> df 
         date 
0 2014-05-01 18:47:05.069722 
1 2014-05-01 18:47:05.119994 
2 2014-05-02 18:47:05.178768 

>>> df.eq(pd.DataFrame(dict(date=[np.nan]*3))) 
     date 
0 1970-01-01 
1 1970-01-01 
2 1970-01-01 

関連する問題