我正在使用pandas库来读取一些CSV数据 . 在我的数据中,某些列包含字符串 . 字符串 "nan"
是一个可能的值,因为它是一个空字符串 . 我设法让pandas读取"nan"作为字符串,但我可以't figure out how to get it not to read an empty value as NaN. Here' s样本数据和输出
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"作为字符串“nan”,但仍然将空单元格读取为NaN . 我尝试将 converters
参数中的 str
传递给read_csv(带 converters={'One': str})
),但它仍然将空单元格读取为NaN .
我意识到我可以用fillna读取后填充值,但是真的没有办法告诉pandas特定CSV列中的空单元应该被读作空字符串而不是NaN吗?
2 回答
我添加了一张票,在这里添加一些选项:
https://github.com/pydata/pandas/issues/1450
在此期间,
result.fillna('')
应该做你想要的编辑:在开发版本(最终为0.8.0)如果指定
na_values
的空列表,空字符串将在结果中保留空字符串阅读其他答案和评论后,我仍然感到困惑 . 但现在答案似乎更简单,所以你走了 .
自Pandas 0.9版(2012年起)以来,只需设置
keep_default_na=False
即可读取空单元解释为空字符串的csv:这个问题在下面有更清楚的解释
这是在2012年8月19日为Pandas 0.9版本修复的