让pandas.read_csv将空值读取为空字符串,而不是nan

2024-04-29 19:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用熊猫库读取一些CSV数据。在我的数据中,某些列包含字符串。字符串"nan"是一个可能的值,与空字符串一样。我设法让pandas将“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”读取为字符串“nan”,但仍然将空单元格读取为nan。我试着传入converters参数中的str来读取csv(使用converters={'One': str})),但它仍然将空细胞读取为NaN。

我意识到我可以在阅读之后用fillna填充这些值,但是真的没有办法告诉pandas某个CSV列中的空单元格应该被读取为空字符串而不是NaN吗?


Tags: csv数据字符串pandasnanonethreefive
3条回答

在阅读了其他的答案和评论之后,我仍然感到困惑。但现在的答案似乎更简单了,所以你来吧。

由于Pandas版本0.9(从2012年起),您可以通过简单设置keep_default_na=False读取csv,空单元格解释为空字符串:

pd.read_csv('test.csv', keep_default_na=False)

这个问题在

2012年8月19日,熊猫版的0.9英寸

我们在Pandas read_csv中有一个简单的论点:

使用:

df = pd.read_csv('test.csv', na_filter= False)

Pandas文档清楚地解释了上述论点的工作原理。

Link

我在这里添加了一张票来添加某种选项:

https://github.com/pydata/pandas/issues/1450

同时,result.fillna('')应该做你想做的事

编辑:在开发版本(最终版本为0.8.0)中,如果指定空的na_values列表,则结果中将保留空字符串

相关问题 更多 >