2012-03-29 104 views
1

我正在使用熊猫来读取csv文件。数据是数字,但以文本形式存储在csv文件中。某些值在不良或缺失时为非数字值。如何过滤这些值并将其余数据转换为整数。在python熊猫中读取csv并处理不良值

我假设有一个更好/更快的方式比循环所有的值和使用isdigit()来测试它们是数字。

熊猫或者numpy是否有一种方式来识别读者的不良值?如果不是,那么最简单的方法是什么?我必须指定dtypes来完成这项工作吗?

回答

3

pandas.read_csv有参数na_values

na_values : list-like, default None 
    List of additional strings to recognize as NA/NaN 

在这里你可以定义这些错误值。

+0

太好了。这似乎是我正在寻找的。 – Dave31415 2012-03-30 13:35:47

+0

如果字符串是列相关的,有没有办法使用na_values?例如,我有一些负值不好的列,但是其他的地方他们很好。 – Shawn 2017-03-23 19:45:03

+1

不是@Shawn。理想情况下,您无法对每列的na_values执行不同的操作。在数据预处理/清洗时应该处理负值 – JKC 2017-12-13 07:06:07

1

NumPy专门为此提供了功能genfromtxt()。从链接文件的第一句话:从文本文件

加载数据,以作为指定的方式处理缺失值。

+0

好的,谢谢。我认为熊猫应该是更高层次的附加组件。我期待着这个功能。那么只需使用它并将其转换为数据框? – Dave31415 2012-03-29 14:57:43

+0

@ Dave31415:我不知道你的数据究竟是怎样的,但这是我首先尝试的方法。 – 2012-03-29 14:59:51

+0

如果'pandas.read_csv'没有做你需要的,请在GitHub上创建一个问题:http://github.com/pydata/pandas/issues – 2012-03-30 00:23:12

3

您可以使用pandas.read_csv传递值的自定义列表,将其视为缺失。或者,您可以将函数传递给converters参数。