问题 熊猫将'NA'转换为NaN


我刚刚在生物学研究中选择了Pandas来做一些数据分析工作。结果我正在分析的一种蛋白质被称为'NA'。

我有一个矩阵,在列标题上有成对的'HA,M1,M2,NA,NP ......',和“行标题”相同(对于可能读过这个的生物学家,我正在使用流感)。

当我直接从CSV文件将数据导入Pandas时,它将“行标题”读作“HA,M1,M2 ...”,然后NA读取为NaN。有没有办法阻止这个?列标题很好 - 'HA,M1,M2,NA,NP等......'


8520
2018-05-16 19:48


起源

对于愚蠢的黑客解决方案,您可以在csv中进行搜索/替换并重命名 NA 喜欢的东西 NA_safe。 - flies


答案:


以这种方式关闭NaN检测: pd.read_csv(filename, keep_default_na=False)

我最初建议 na_filter=False完成工作。但是,如果我理解下面杰夫的评论,这是一个更清洁的解决方案。

例:

In [1]: pd.read_csv('test')
Out[1]:[4]: pd.read_csv('test', keep_default_na=False)
Out[4]:1   2
2   3

11
2018-05-16 19:55



也许还值得一提 na_values :) - Andy Hayden
是。说起来,对我来说似乎并不奇怪 na_values=None (默认)也不 na_values=[] 在这种情况下抑制NaN检测。 - Dan Allan
“额外 字符串识别为NA / NaN。“但是是的...... - Andy Hayden
FYI na_filter是一种不同类型的选项,旨在完全“关闭”nan检测,而na_values允许检测新的/不同的值,并且使事情复杂化,keep_na_filter允许您不使用默认的na值......!也许在docs / cookbook中需要一个例子! - Jeff
还要注意,关闭列的dtype(如果它说混合字符串/整数)的纳米检测结果 object,通常不是一件好事,你想尽可能地转换为基本类型以提高效率 - Jeff


刚遇到这个问题 - 我为该列指定了一个str转换器,所以我可以在其他地方保留na: pd.read_csv(... , converters={ "file name": str, "company name": str})


3
2018-02-09 23:29