我有一个从csv文件创建的pandas数据框.此数据框的一列包含最初强制转换为字符串的数字数据.大多数条目都是类似数字的,但有些条目包含非数字的各种错误代码.我事先不知道所有的错误代码是什么或有多少.因此,例如,数据框可能如下所示:
[In 1]: df
[Out 1]:
data OtherAttr
MyIndex
0 1.4 aaa
1 error1 foo
2 2.2 bar
3 0.8 bar
4 xxx bbb
...
743733 BadData ccc
743734 7.1 foo
Run Code Online (Sandbox Code Playgroud)
我想将df.data
其转换为浮点数并抛弃任何无法正确转换的值.这是否有内置功能?就像是:
df.data = df.data.astype(float, skipbad = True)
Run Code Online (Sandbox Code Playgroud)
(虽然我知道具体不起作用,但我没有看到任何形式的kwargs做我想做的事)
我想我可以编写一个函数try
然后使用pandas apply
或者map
,但这似乎是一个不优雅的解决方案.这一定是一个相当普遍的问题,对吧?
使用convert_objects
“尝试为对象列推断更好的数据类型”的方法:
In [11]: df['data'].convert_objects(convert_numeric=True)
Out[11]:
0 1.4
1 NaN
2 2.2
3 0.8
4 NaN
Name: data, dtype: float64
Run Code Online (Sandbox Code Playgroud)
事实上,您可以将其应用于整个 DataFrame:
In [12]: df.convert_objects(convert_numeric=True)
Out[12]:
data OtherAttr
MyIndex
0 1.4 aaa
1 NaN foo
2 2.2 bar
3 0.8 bar
4 NaN bbb
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2556 次 |
最近记录: |