gpt4 book ai didi

python - 如何将对象转换为数值

转载 作者:行者123 更新时间:2023-12-01 08:05:56 25 4
gpt4 key购买 nike

我的 DataFrame 列之一中的数据非常不一致:

col1
12.0
13,1
NaN
20.3
abc
"12,5"
200.9

我需要对这些数据进行标准化,并找到数值中的最大值,该最大值应该小于 100。

这是我的代码:

df["col1"] = df["col1"].apply(lambda x: float(str(x).replace(',', '.')) if x.isdigit() else x)
num_temps = pd.to_numeric(df[col],errors='coerce')
temps = num_temps[num_temps<10]
print(temps.max())

例如,当 x 为 float AttributeError: 'float' object has no attribute 'isdigit' 时,它会失败。

最佳答案

通过 str(x) 将值转换为 string,但是为了测试,还需要替换 ., 为空值以供使用 isdigit:

df["col1"] = df["col1"].apply(lambda x: float(str(x).replace(',', '.')) if str(x).replace(',', '').replace('.', '').isdigit() else x)

但是这里可以将值转换为字符串,然后使用 Series.str.replace :

num_temps = pd.to_numeric(df["col1"].astype(str).str.replace(',', '.'), errors='coerce')
print (df)
col1
0 12.0
1 13.1
2 NaN
3 20.3
4 NaN
5 12.5
6 200.9

temps = num_temps[num_temps<100]
print(temps.max())
20.3

替代方案:

def f(x):
try:
return float(str(x).replace(',','.'))
except ValueError:
return np.nan

num_temps = df["col1"].apply(f)
print (num_temps)

0 12.0
1 13.1
2 NaN
3 20.3
4 NaN
5 12.5
6 200.9
Name: col1, dtype: float64

关于python - 如何将对象转换为数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55532990/

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