用python读写和处理csv文件,python csv文件读写
(我在GitHub上开了一期。)
以下行为在我看来是不正确的。似乎如果read_csv的默认值是na_values=False,那么任何包含 na 的值都不应该被解释为NaN,但事实似乎并非如此。
在这个帖子中注意到了这种行为(见@JianxunLi对答案的评论),这里的 NA 实际上是指北美。我实际上无法找到一种方法来阅读这些内容,而不将其更改为NaN,并且必须有一些方法来做到这一点。
这是csv的一个例子。
%more foo.txt
x,y
不,不
福,福
我把 NA 包括在引号和外面,看看它是否重要,但正如你在下面看到的,它似乎不重要。
pd.read_csv(foo.txt )
Out[56]:
x y
0楠楠
1个foo foo
pd.read_csv(foo.txt ,na_values=False)
Out[57]:
x y
0楠楠
1个foo foo
pd.read_csv(foo.txt ,na_values=foo )
Out[58]:
x y
0楠楠
1楠楠
看来‘南’的数据值被当成和‘那’一样了。
编辑:我觉得基于@Marius的回答我更理解这一点虽然在我看来不太合适(默认行为,即不是Marius的回答,似乎是对正在发生的事情的正确解释)。
na_values=False=NA和NaN被视为NaN
na_values=foo=NA、NaN和foo被视为NaN
我想我可以理解这是数值列的默认行为,但似乎不应该是字符串列的默认行为。没有看到马吕斯的回答,我也很难从文件中搞清楚这一点。
添加(2):
另外,为了比较,我把它读入Stata和Excel,两种情况下都把“NA”当作纯文本而不是NaN/missing。有没有其他和熊猫一样默认行为的包或者库?
解决方法:
你需要保持_default_NA=False。默认情况下,na_values中包含的任何字符串都将添加到标准na字符串集中,例如NA,NaN:
pd.read_csv(foo.txt ,keep_default_na=False)
Out[5]:
x y
0 NA NA
1个foo foo
标签:蟒蛇,熊猫
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。