将数字字符串的类型更改为,将小数点后的空格分隔为int / float

问题描述

我有一个带有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)构造。