2015-09-30 15 views
5

でnat上では動作しません。私はこのシリーズを持っている:Pythonのパンダ.isnull()は、オブジェクトDTYPE

ser=pd.Series([11,22,33,np.nan,np.datetime64('nat')],name='my_series') 

シリーズは、次のようになります。

0  11 
1  22 
2  33 
3 NaN 
4 NaN 
Name: my_series, dtype: object 

しかし、私は一つだけTrue NULLのための取得します値:

ser.isnull() 

0 False 
1 False 
2 False 
3  True 
4 False 
Name: my_series, dtype: bool 

これはバグですか、どうやってpandasシリーズのNULL値を正しく数えることができますか?これは役に立たない:

ser=ser.replace('NaN',np.nan) 

ありがとう!この問題を回避するには

+0

をしたい場合は、同様にあなたの実際のコードでは、シリーズを作成しているnp.datetime使用することができますか? –

+0

'ser.loc [4]'は 'NaN'または' NaT'になりますか?私はdatetime64はNaNとNaTと互換的に扱うことができると思いますが、NaTを一連の 'オブジェクト'に帰属させると問題が発生します – vmg

+0

はい。もちろんこれは単なる例です... 2番目の 'NaN'は' NaT'(??)から変換されましたが、変換中に何らかの問題が生じる可能性があります。または、おそらく変換がありません: 'ser.loc [4]'結果 'NaT' – ragesz

答えて

0

は、あなたも

series.apply(lambda x: str(x) == "nat")

を行うことができます次に、あなたはまだあなたが

+2

これは機能しません。 'serial.apply(lambda x:str(x)==" NaT ")' **は**動作します。文字列比較の大文字と小文字の区別に注意してください。 – C8H10N4O2

+0

^これは正解です – af3ld

関連する問題