当前位置: 首页 > 知识库问答 >
问题:

获取pandas.read_csv以将空值作为空字符串而不是nan读取

薛飞星
2023-03-14

我正在用熊猫库读取一些CSV数据。在我的数据中,某些列包含字符串。字符串"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以读取\u csv(使用converters={'One':str})),但它仍然将空单元格读取为nan。

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

共有3个答案

云丰
2023-03-14

我们在Pandasread_csv()中有一个简单的参数

使用:

df = pd.read_csv('test.csv', na_filter= False)
惠洛华
2023-03-14

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

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

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

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

姜景辉
2023-03-14

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

自Pandas版本0.9(2012年起)以来,您可以通过简单地设置keep\u default\u na=False来读取csv,其中空单元格被解释为空字符串:

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

这个问题更清楚地解释在

  • 在read_csv·Issue#1657·pandas dev/pandas中处理更一致的na_值

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

  • BUG:更一致na_values#1657·熊猫-开发/pandas@d9abf68

 类似资料:
  • 问题内容: 我正在使用pandas库读取一些CSV数据。在我的数据中,某些列包含字符串。该字符串是一个可能的值,一个空字符串也可以。我设法让大熊猫以字符串形式读取“ nan”,但我不知道如何获取它而不读取作为NaN的空值。这是示例数据和输出 它正确地写着“男”为字符串“南”,但仍读取空单元格作为NaN的。我想传递的参数read_csv(带),但它仍然读取空单元格作为NaN的。 我知道我可以在读取后

  • 问题内容: 如何拆分字符串并获取NULL值而不是空字符串。 我特别感兴趣的两个方法和。我希望这个查询: 将返回第三行而不是空字符串。有没有简单的方法可以做到这一点,即使用特殊字符?我的意思是: 我希望我可以使用方法从字符串中提取NULL : 从这里获取的代码:https : //sqlperformance.com/2016/03/t-sql-queries/string- split 问题答案:

  • 问题内容: 是否有可能以某种方式返回0而不是在JavaScript中解析值时返回? 如果为空,则返回。 是否可以在JavaScript中执行类似的操作来检查? 或者,也许还有另一个功能或jQuery插件可以做类似的事情? 问题答案: 当不与布尔值一起使用时,逻辑OR()运算符如果可以被评估为true,则返回第一个表达式(),否则返回第二个表达式(0)。返回值为NaN。NaN的计算结果为false,

  • 问题内容: 我想获取字段的字符串值(它们可以是长字符串或任何对象的类型), 如果一个字段为空,那么它应该返回空字符串,我用番石榴做过; 但是如果gearbox为null,则返回null!非空字符串,因为valueOf methdod返回字符串“ null”,这会导致错误。 有任何想法吗? EDIt:有100多个字段,我正在寻找易于实现的字段 问题答案: 您可以使用(Java 7中的标准): 从链接

  • 我有以下疑问: 默认为空String(),它也可以设置为用户可以输入的字符串。 现在,默认情况下获取名称列填充文本或设置为空字符串的所有行。 但是,也有名称设置为NULL的行。 如果是空字符串,我如何更改查询以同时返回带有NULL的行?

  • 我有一个数据框,如下所示: 我想用一个空字符串删除NaN值,这样看起来像这样: