You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame中金额字符串转换为对应整数数值

解决方法:将格式化金额字符串转换为整数数值

没问题,这事儿好办!咱们可以通过自定义转换函数结合pandas的字符串处理能力,轻松把这些带格式的金额转成整数。下面是具体的实现步骤和代码:

步骤说明

  1. 清理字符串:先去掉字符串里的欧元符号€和多余空格,拆分出数字部分和单位(Mill/Th)
  2. 转换数字格式:把欧洲式的逗号小数点(比如9,00)换成美式的点,转成浮点数
  3. 按单位缩放:根据单位(Mill表示百万,Th表示千)乘以对应的倍数,最后转成整数

完整代码示例

假设你的DataFrame已经创建好了,直接运行以下代码即可:

import pandas as pd

# 先构造示例DataFrame(如果你的数据已经存在,这步可以跳过)
data = {
    'Name': ['Mikael Forssell', 'Hernan Crespo', 'Nuno Morais', 'Alex', 
             'Filipe Oliveira', 'Craig Rocastle', 'Wayne Bridge', 
             'Jiri Jarosik', 'Joe Keenan'],
    'Value': ['9,00 Mill. €', '15,00 Mill. €', '1,00 Mill. €', '10,00 Mill. €',
              '450 Th. €', '100 Th. €', '7,75 Mill. €', '6,50 Mill €', '600 Th. €']
}
players = pd.DataFrame(data)

# 定义转换函数
def convert_value(s):
    # 去掉欧元符号和多余空格,拆分内容
    cleaned = s.replace('€', '').strip()
    # 提取数字部分,替换逗号为点
    num_str = cleaned.split()[0].replace(',', '.')
    num = float(num_str)
    # 判断单位并缩放
    if 'Mill' in cleaned:
        return int(num * 1_000_000)
    elif 'Th' in cleaned:
        return int(num * 1_000)
    else:
        return int(num)  # 处理意外情况,可根据需求调整

# 应用函数到Value列
players['Value'] = players['Value'].apply(convert_value)

# 查看结果
print(players)

运行结果

执行后你会得到想要的整数格式DataFrame:

Name    Value
0  Mikael Forssell   9000000
1    Hernan Crespo  15000000
2      Nuno Morais   1000000
3             Alex  10000000
4  Filipe Oliveira    450000
5  Craig Rocastle     100000
6    Wayne Bridge   7750000
7    Jiri Jarosik   6500000
8      Joe Keenan     600000

这个方法还能兼容像6,50 Mill €(少了点)这类格式不统一的情况,容错性不错~

内容的提问来源于stack exchange,提问作者Paul R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:33:25