我將np.nan
分配給DataFrame的列中的缺失值。然後使用to_csv將DataFrame寫入到csv文件中。如果我使用文本編輯器打開文件,則生成的csv文件在缺失值的逗號之間沒有任何內容。但是當我使用read_csv將該csv文件讀回到DataFrame中時,缺少的值將成爲字符串'nan'
而不是NaN。因此,isnull()
不起作用。例如:Pandas read_csv用字符串'nan'填充空值,而不是解析日期
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分配給缺失值並仍然解析有效日期?
你能否包含csv的頭部(所以我們可以重新創建)? – 2013-04-22 23:18:25