我正在使用panda库读入一些CSV数据。在我的数据中,某些列包含字符串。字符串"nan"
是一个可能的值,也是一个空字符串。我设法让panda将“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。我尝试在read_csv的converters
参数中传入str
(使用converters={'One': str})
),但它仍将空单元格读取为NaN。
我意识到我可以在阅读后用fillna填充值,但是真的没有办法告诉Pandas,特定CSV列中的空单元格应该读作空字符串而不是NaN吗?
6条答案
按热度按时间blmhpbnm1#
阅读了其他的答案和评论后,我还是很困惑。但是现在答案似乎更简单了,所以给你。
从Pandas 0.9版本(2012年起)开始,您可以通过设置
keep_default_na=False
来读取包含解释为空字符串的空单元格的csv:此问题在中有更清楚的解释
这是固定在八月19,2012为Pandas版本0.9在
q1qsirdb2#
我添加了一个票证,以便在此处添加某种选项:
https://github.com/pydata/pandas/issues/1450
与此同时,
result.fillna('')
应该做您想做的事情EDIT:在开发版本(最终版本为0.8.0)中,如果指定
na_values
的空列表,则空字符串将在结果中保持为空字符串wh6knrhe3#
我们在Pandas
read_csv()
中对此有一个简单的论证:use:
wqnecbli4#
pandas
默认定义为缺失值,而read_csv()
可以在此处找到。产出
有了它,你可以选择退出。
qlvxas9a5#
如果只想保留一列的空字符串,可以将
str
定义为列转换器(dtypes
不起作用):vyswwuz26#
pd.read_csv( sourceObj, dtype='string')
不需要额外的参数。
每个列类型都是python基元字符串,空值变成空字符串“”。
版本:Pandasv1.5