np.nan
DataFrame の列の欠損値に割り当てます。DataFrame は、to_csv を使用して csv ファイルに書き込まれます。テキストエディタでファイルを開くと、結果の csv ファイルには、欠落している値のコンマの間に何も含まれていません。しかし、read_csv を使用してその csv ファイルを DataFrame に読み込むと、欠落している値'nan'
が NaN ではなく文字列になります。その結果、isnull()
機能しません。例えば:
In [13]: df
Out[13]:
index value date
0 975 25.35 nan
1 976 26.28 nan
2 977 26.24 nan
3 978 25.76 nan
4 979 26.08 nan
In [14]: df.date.isnull()
Out[14]:
0 False
1 False
2 False
3 False
4 False
私は何か間違ったことをしていますか?np.nan
が取得できるように、欠落している値の代わりに他の値を割り当てる必要がisnull()
ありますか?
編集:申し訳ありませんが、その列を解析するために parse_dates = [2] も設定したことを忘れていました。その列には、いくつかの行が欠落している日付が含まれています。不足している行を にしたいと思いますNaN
。
EIDT: この問題は本当に parse_dates が原因であることがわかりました。日付列に欠損値が含まれている場合、read_csv はその列を解析しません。代わりに、日付を文字列として読み取り、文字列「nan」を空の値に割り当てます。
In [21]: data = pd.read_csv('test.csv', parse_dates = [1])
In [22]: data
Out[22]:
value date id
0 2 2013-3-1 a
1 3 2013-3-1 b
2 4 2013-3-1 c
3 5 nan d
4 6 2013-3-1 d
In [23]: data.date[3]
Out[23]: 'nan'
pd.to_datetime も機能しません:
In [12]: data
Out[12]:
value date id
0 2 2013-3-1 a
1 3 2013-3-1 b
2 4 2013-3-1 c
3 5 nan d
4 6 2013-3-1 d
In [13]: data.dtypes
Out[13]:
value int64
date object
id object
In [14]: pd.to_datetime(data['date'])
Out[14]:
0 2013-3-1
1 2013-3-1
2 2013-3-1
3 nan
4 2013-3-1
Name: date
read_csv parse_dates で欠損値を含む列を操作する方法はありますか? つまり、欠損値に NaN を割り当てても、有効な日付を解析しますか?