2014-11-06 128 views

回答

10

使用convert_objects与PARAM convert_numeric=True这将迫使任何非数值到NaN

In [24]: 

df = pd.DataFrame({'a': [0.1,0.5,'jasdh', 9.0]}) 
df 
Out[24]: 
     a 
0 0.1 
1 0.5 
2 jasdh 
3  9 
In [27]: 

df.convert_objects(convert_numeric=True) 
Out[27]: 
    a 
0 0.1 
1 0.5 
2 NaN 
3 9.0 
In [29]: 

然后,您可以删除它们:

df.convert_objects(convert_numeric=True).dropna() 
Out[29]: 
    a 
0 0.1 
1 0.5 
3 9.0 

UPDATE

由于0.17.0这个版本方法现在是deprecated,你需要t Ø使用to_numeric不幸的是这工作在Series而不是整个DF这样的等同的代码现在:

df.apply(lambda x: pd.to_numeric(x, errors='coerce')).dropna() 
+0

感谢这个!我的数据框有多列。一些列需要有字符串。例如,我有一个'姓名'栏和一个'年龄'栏。 “年龄”栏需要是数字。我试过:df.age.convert_objects(convert_numeric = True)并且'Series'对象没有属性'convert_objects'。 – user3347713 2014-11-06 17:03:02

+0

你需要做'df [['age']]。convert_objects(convert_numeric = True)'在这种情况下 – EdChum 2014-11-06 17:04:52

+0

哦,我明白了,所以[['age']]选择了df中的列。很有帮助。然而,我得到一个TypeError:convert_objects()得到了一个意想不到的关键字参数'convert_numeric。我只是检查了文档,'convert_numeric = True'是正确的参数。思考? – user3347713 2014-11-06 17:14:59

0

您可以从dtype.kind属性中找到列的数据类型。类似于df[col].dtype.kind。有关更多详细信息,请参阅the numpy docs。转置数据框以从索引转到列。