【问题标题】:Change the type of a numeric string with a space separating the decimal places to int/float将用空格分隔小数位的数字字符串的类型更改为 int/float
【发布时间】:2020-10-29 23:07:03
【问题描述】:

我有一个带有 str 值的 pandas 列。我需要将其类型更改为int。问题是所有值都用 (' ') 分隔以区分 Ks 和 Ms,例如:

a = '17 000 000'
int(a)
print(a)

输出:

17000000

【问题讨论】:

  • df['col'].str.replace(' ', '').astype(int)pd.to_numeric(df['col'].str.replace(' ', ''))
  • 完美感谢工作顺利

标签: python pandas dataframe type-conversion numeric


【解决方案1】:

也可以通过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) 构造是推荐的。

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 2018-02-16
    • 2018-04-14
    • 1970-01-01
    • 2018-05-11
    • 2015-06-02
    • 1970-01-01
    • 2011-07-16
    相关资源
    最近更新 更多