Pandas:读取包含特殊字符列的文件

3

在我的数据中,有些特征值是?。我该如何用NA替换它们?

编辑

代码和输出如下:

df = pd.read_csv("cca-census-income.csv", header = None)

df.replace('?', np.nan, inplace=True)

df.ix[0,]

23                Other relative of householder
24                                      1700.09
25                                            ?
26                                            ?
27                                            ?
28             Not in universe under 1 year old
29                                            ?
30                                            0
2个回答

3

read_csv函数中添加参数na_values='?'

示例:

import pandas as pd
import io


temp=u"""Date Time,a
2010-01-27 16:00:00,?
2010-01-27 16:10:00,2.2
2010-01-27 16:30:00,1.7"""

df = pd.read_csv(io.StringIO(temp),na_values='?')
print (df)
             Date Time    a
0  2010-01-27 16:00:00  NaN
1  2010-01-27 16:10:00  2.2
2  2010-01-27 16:30:00  1.7

编辑:

感谢 'shivsn' 提供的建议,添加 skipinitialspace=True

temp=u"""Date Time,a
 ? , ?
? ,?
2010-01-27 16:30:00,1.7"""

df = pd.read_csv(io.StringIO(temp),na_values=['?', '? '], skipinitialspace =True)
print (df)
             Date Time    a
0                  NaN  NaN
1                  NaN  NaN
2  2010-01-27 16:30:00  1.7

通过文件编辑1:

看起来在问号前只有一个空格space

df = pd.read_csv('census-income.data', 
                 header = None, 
                 na_values=['?'], 
                 skipinitialspace =True)
print (df)

我尝试了这个但它不起作用。df = pd.read_csv("train.csv", header = None, na_values='?')输出的df.ix[0,]仍然显示为 ? - chintan s
只有 ? 吗?也许有一些空格。 - jezrael
1
尝试添加 skipintialspace=True - shivsn
@jezrael 我没有看到。数据来自这里 https://archive.ics.uci.edu/ml/datasets/Census-Income+%28KDD%29 - chintan s

1
读取文件后使用 replace
df.repalce('.?',np.nan,inplace=True,regex=True)

这个也不起作用。我刚刚提供了代码和输出结果。 - chintan s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接