将带有 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)结构