问题:获取pandas.read_csv以将空值读取为空字符串而不是nan
我正在使用pandas库读取一些CSV数据。在我的数据中,某些列包含字符串。该字符串"nan"
是一个可能的值,一个空字符串也可以。我设法让大熊猫将“ nan”读取为字符串,但是我不知道如何获取不读取空值的NaN。这是示例数据和输出
One,Two,Three
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven
>>> pandas.read_csv('test.csv', na_values={'One': [], "Three": []})
One Two Three
0 a 1 one
1 b 2 two
2 NaN 3 three
3 d 4 nan
4 e 5 five
5 nan 6 NaN
6 g 7 seven
它正确地写着“男”为字符串“南”,但仍读取空单元格作为NaN的。我想传递str
的converters
参数read_csv(带converters={'One': str})
),但它仍然读取空单元格作为NaN的。
我意识到我可以在读取后使用fillna填充值,但是真的没有办法告诉熊猫特定CSV列中的空单元格应被读取为空字符串而不是NaN吗?
回答 0
我添加了票证以在此处添加某种选项:
https://github.com/pydata/pandas/issues/1450
同时,result.fillna('')
应该做你想做的
编辑:在开发版本中(最终为0.8.0),如果您指定的空列表na_values
,则空字符串将在结果中保留空字符串
回答 1
阅读其他答案和评论后,我仍然感到困惑。但是,现在的答案似乎更简单,因此您可以开始操作。
从Pandas 0.9版(自2012年起)开始,您只需设置keep_default_na=False
以下内容,即可读取解释为空字符串的空单元格的csv :
pd.read_csv('test.csv', keep_default_na=False)
此问题在以下内容中有更清楚的说明
该问题已于2012年8月19日在Pandas 0.9版中修复
回答 2
我们在Pandas read_csv中有一个简单的参数:
使用:
df = pd.read_csv('test.csv', na_filter= False)
熊猫的文档清楚地解释了上述论点是如何工作的。