gpt4 book ai didi

python - Pandas :将带有空字符串的列转换为 float

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

在我的应用程序中,我收到一个 pandas DataFrame(例如,block),它有一个名为 est 的列。此列可以包含字符串或 float 的混合。我需要将列中的所有值都转换为 float ,并将列类型设置为 float64。我使用以下代码这样做:

block[est].convert_objects(convert_numeric=True)
block[est].astype('float')

这适用于大多数情况。但是,在一种情况下,est 包含所有空字符串。在这种情况下,第一条语句执行没有错误,但列中的空字符串仍然是空字符串。然后第二条语句导致错误:ValueError: could not convert string to float:

如何修改我的代码以处理包含所有空字符串的列?

编辑:我知道我可以做 block[est].replace("", np.NaN),但我想知道是否有什么方法可以做它只包含我缺少的 convert_objectsastype

说明:由于项目特定原因,我需要使用 pandas 0.16.2。

这是与一些示例数据的交互,演示了失败:

>>> block = pd.DataFrame({"eps":["", ""]})
>>> block = block.convert_objects(convert_numeric=True)
>>> block["eps"]
0
1
Name: eps, dtype: object
>>> block["eps"].astype('float')
...
ValueError: could not convert string to float:

最佳答案

使用以下方法更容易:

pandas.to_numeric

http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.to_numeric.html

import pandas as pd
df = pd.DataFrame({'eps': ['1', 1.6, '1.6', 'a', '', 'a1']})

df['eps'] = pd.to_numeric(df['eps'], errors='coerce')

'coerce' 会将任何值错误转换为 NaN

df['eps'].astype('float')
0 1.0
1 1.6
2 1.6
3 NaN
4 NaN
5 NaN
Name: eps, dtype: float64

然后你可以应用其他功能而不会出错:

df['eps'].round()
0 1.0
1 2.0
2 2.0
3 NaN
4 NaN
5 NaN
Name: eps, dtype: float64

关于python - Pandas :将带有空字符串的列转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465741/

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