gpt4 book ai didi

python - DataFrame 对象类型列转换为 int 或 float 错误

转载 作者:太空宇宙 更新时间:2023-11-03 19:58:12 35 4
gpt4 key购买 nike

我有以下数据框

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20 entries, 0 to 19
Data columns (total 7 columns):
Borough 20 non-null object
Indian 20 non-null object
Pakistani 20 non-null object
Bangladeshi 20 non-null object
Chinese 20 non-null object
Other_Asian 20 non-null object
Total_Asian 20 non-null object
dtypes: object(7)

只有“Borough”列是字符串,其他列应该是 int 或 float。我正在尝试使用 astype(int) 进行转换。我已经尝试了互联网上提到的所有选项,但仍然出现错误。

df_LondonEthnicity['Indian'] = df_LondonEthnicity['Indian'].astype(int)

错误是:

invalid literal for int() with base 10:

我也尝试过

df_LondonEthnicity['Indian'] = df_LondonEthnicity.astype({'Indian': int}).dtypes

我也尝试过

cols = ['Indian', 'Pakistani', 'Bangladeshi', 'Chinese', 'Other_Asian', 'Total_Asian']  

for col in cols: # Iterate over chosen columns
df_LondonEthnicity[col] = pd.to_numeric(df_LondonEthnicity[col])

还尝试将获取的字符串转换为 float

我希望得到一些帮助。谢谢

最佳答案

正如评论中指出的,您需要使用 to_numeric 函数。

该错误的含义是您尝试转换的值包含 0-9 (base10) 以外的字符。

因此,您可以选择使用 pd.to_numeric 并将所有不合格值设置为 NaN 或以某种方式将其转换。

假设您有一个像这样的数据框。

>>> df
X
0 123
1 123,
2 200
3 200.1
<小时/>

使用pd.to_numeric将会得到这样的输出。但这些值是 float 。

>>> pd.to_numeric(df.X, errors='coerce')
0 123.0
1 NaN
2 200.0
3 200.1
Name: X, dtype: float64
<小时/>

其他选项是以某种方式将其转换为这样。

>>> df.X.str.extract(r'([\d]+)').astype(int)
0
0 123
1 123
2 200
3 200

关于python - DataFrame 对象类型列转换为 int 或 float 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59429238/

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