如何将DataFrame中金额字符串转换为对应整数数值
解决方法:将格式化金额字符串转换为整数数值
没问题,这事儿好办!咱们可以通过自定义转换函数结合pandas的字符串处理能力,轻松把这些带格式的金额转成整数。下面是具体的实现步骤和代码:
步骤说明
- 清理字符串:先去掉字符串里的欧元符号
€和多余空格,拆分出数字部分和单位(Mill/Th) - 转换数字格式:把欧洲式的逗号小数点(比如
9,00)换成美式的点,转成浮点数 - 按单位缩放:根据单位(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
相关产品推荐
相关产品推荐

