gpt4 book ai didi

python - 将 pandas 系列从 str 转换为 float 时,是否有一种方法可以跳过不可转换的行?

转载 作者:太空狗 更新时间:2023-10-29 21:55:21 26 4
gpt4 key购买 nike

我有一个从 csv 文件创建的 pandas datagframe。此数据框的一列包含最初转换为字符串的数字数据。大多数条目都是类似数字的,但有些条目包含各种非数字的错误代码。我事先不知道所有错误代码可能是什么或有多少。因此,例如,数据框可能如下所示:

[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

我想将 df.data 转换为 float 并丢弃所有未正确转换的值。是否有内置功能?像这样的东西:

df.data = df.data.astype(float, skipbad = True)

(虽然我知道这特别行不通,而且我没有在 astype 中看到任何 kwargs 做我想做的事)

我想我可以使用 try 编写一个函数,然后使用 pandas applymap,但这似乎是一个不够优雅的解决方案。这一定是一个相当普遍的问题,对吧?

最佳答案

使用 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

事实上,您可以将其应用于整个 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

关于python - 将 pandas 系列从 str 转换为 float 时,是否有一种方法可以跳过不可转换的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com