问题描述
我有一个带有str
值的pandas列。我需要将其类型更改为int
。问题在于,所有值都用({' '
)分隔以区分K和M,例如:
a = '17 000 000'
int(a)
print(a)
输出:
17000000
解决方法
也可以通过changing locale
settings并应用locale.atof()
来做到这一点。
注意:如果存在其他与语言环境相关的逻辑,请不要使用它。
代码:
import locale
import pandas as pd
# data
df = pd.DataFrame({"A":["17 000 000","15 000,22"]})
# change locale settings
locale._override_localeconv["thousands_sep"] = " "
locale._override_localeconv["decimal_point"] = ","
# apply
df["A"] = df["A"].apply(locale.atof)
结果:
print(df)
A
0 17000000.00
1 15000.22
我个人认为,建议使用@Erfan提到的df["A"].str.replace(" ","").astype(int)
构造。