gpt4 book ai didi

python - 如果列包含 Pandas 中的字符,则更改列类型

转载 作者:太空宇宙 更新时间:2023-11-03 15:39:01 24 4
gpt4 key购买 nike

例如,我在某些列(非空对象)中有字符“%”的值

 col1     col2  col3 
'4.24%' '5.22%' 8

但我想要 4.24 和 5.22 作为 float 。

I have tried with:
for el in df.columns:
if df[el].str.contains('%').any():
df[el] = df[el].str.strip("%").astype(float)

并说:AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas

如果我使用:

if df['col1'].str.contains('%').any():
df['col1'] = df['col1'].str.strip("%").astype(float)

然后工作正常。但是遍历所有列是行不通的。

欢迎任何帮助。

最佳答案

您需要在 str.contains('%') 之前转换为字符串,因为它还测试非字符串列:

for el in df.columns:
if df[el].astype(str).str.contains('%').any():
df[el] = df[el].str.strip("%").astype(float)

print (df)
col1 col2 col3
0 4.24 5.22 8

另一个更好的解决方案是使用 select_dtypes仅选择 object 列(显然是 strings):

for el in df.select_dtypes(object).columns:
if df[el].str.contains('%').any():
df[el] = df[el].str.strip("%").astype(float)

关于python - 如果列包含 Pandas 中的字符,则更改列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53742886/

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