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

如何判断Price列值为lacs/Crore并转换为数值存回原列?

解决Pandas中金额单位转换问题

原始数据

import pandas as pd
df = pd.DataFrame({'Price' : ['5.5 lacs', '5.7 Crore', '3.5 lacs', '3.15 lacs']})

需求

将lacs单位转换为原值×100000,Crore单位转换为原值×10000000,结果存回原Price列并转为整数。


方法一:向量式操作(高效处理大数据)

通过正则拆分数值和单位,利用映射表计算转换值,适合大规模数据集:

import pandas as pd

df = pd.DataFrame({'Price' : ['5.5 lacs', '5.7 Crore', '3.5 lacs', '3.15 lacs']})

# 提取数值部分和单位部分
df[['num', 'unit']] = df['Price'].str.extract(r'(\d+\.?\d*) (lacs|Crore)')

# 将数值转为浮点型
df['num'] = pd.to_numeric(df['num'])

# 定义单位到转换系数的映射
unit_map = {'lacs': 100000, 'Crore': 10000000}

# 计算转换后的值并覆盖原Price列,转为整数
df['Price'] = (df['num'] * df['unit'].map(unit_map)).astype(int)

# 移除临时生成的num和unit列(可选)
df = df.drop(['num', 'unit'], axis=1)

# 输出结果
print(df)

方法二:Apply函数(代码简洁)

通过字符串拆分和条件判断直接转换,适合小数据集快速实现:

import pandas as pd

df = pd.DataFrame({'Price' : ['5.5 lacs', '5.7 Crore', '3.5 lacs', '3.15 lacs']})

# 遍历每个Price值,根据单位计算转换后的值
df['Price'] = df['Price'].apply(
    lambda x: int(float(x.split()[0]) * 100000) if 'lacs' in x 
    else int(float(x.split()[0]) * 10000000)
)

print(df)

关键说明

  • 单位判断:两种方法分别通过正则匹配、字符串包含判断来区分lacs和Crore
  • 结果存回:直接对df['Price']赋值即可覆盖原列数据
  • 类型转换:最终转为整数符合需求中的示例结果(550000、57000000等)

内容的提问来源于stack exchange,提问作者The Technologist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:05:24