13

我尝试使用 pandas.read_csv 读取缺失值的 .txt。我的数据格式如下:

10/08/2012,12:10:10,name1,0.81,4.02,50;18.5701400N,4;07.7693770E,7.92,10.50,0.0106,4.30,0.0301
10/08/2012,12:10:11,name2,,,,,10.87,1.40,0.0099,9.70,0.0686

具有相同名称的点、gps 位置和其他读数的数千个样本。我使用代码:

myData = read_csv('~/data.txt', sep=',', na_values='')

代码错误,因为 na_values 没有给出 NaN 或其他指标。列应该具有相同的大小,但我以不同的长度完成。

我不知道在 na_values 之后应该输入什么(确实尝试了所有不同的东西)。谢谢

4

2 回答 2

14

该参数na_values必须是“类似列表”(请参阅​​此答案)。

一个字符串是“list like”,所以:

na_values='abc' # would transform the letters 'a', 'b' and 'c' each into `nan`
# is equivalent to
na_values=['a','b','c']

相似地:

na_values=''
# is equivalent to
na_values=[] # and this is not what you want!

这意味着您需要使用na_values=[''].

于 2012-09-20T14:22:29.617 回答
4

你用的是什么版本的熊猫?将空字符串解释为 NaN 是 pandas 的默认行为,并且似乎在 v0.7.3 和当前 master 中都可以很好地解析数据片段中的空字符串,而根本不使用该na_values参数。

In [10]: data = """\
10/08/2012,12:10:10,name1,0.81,4.02,50;18.5701400N,4;07.7693770E,7.92,10.50,0.0106,4.30,0.0301
10/08/2012,12:10:11,name2,,,,,10.87,1.40,0.0099,9.70,0.0686
"""

In [11]: read_csv(StringIO(data), header=None).T
Out[11]: 
                   0           1
X.1       10/08/2012  10/08/2012
X.2         12:10:10    12:10:11
X.3            name1       name2
X.4             0.81         NaN
X.5             4.02         NaN
X.6   50;18.5701400N         NaN
X.7    4;07.7693770E         NaN
X.8             7.92       10.87
X.9             10.5         1.4
X.10          0.0106      0.0099
X.11             4.3         9.7
X.12          0.0301      0.0686
于 2012-09-20T15:41:55.347 回答