将带有 space 分隔小数位的数字字符串的类型更改为 int/float
Change the type of a numeric string with a space separating the decimal places to int/float
我有一个包含 str
个值的 pandas 列。我需要将其类型更改为 int
。问题是所有值都用(' '
)分隔以区分Ks和Ms,例如:
a = '17 000 000'
int(a)
print(a)
输出:
17000000
也可以通过 并应用 locale.atof()
来做到这一点。
注意:如果存在其他 locale-related 逻辑,请不要使用它。
代码:
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)
结构
我有一个包含 str
个值的 pandas 列。我需要将其类型更改为 int
。问题是所有值都用(' '
)分隔以区分Ks和Ms,例如:
a = '17 000 000'
int(a)
print(a)
输出:
17000000
也可以通过 locale.atof()
来做到这一点。
注意:如果存在其他 locale-related 逻辑,请不要使用它。
代码:
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)
结构