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

如何在pandas DataFrame中清理金额列并实现Lakhs到Crore的单位转换

方案1:自定义函数实现(可读性高,适合中小数据量)

代码如下:

import pandas as pd

def convert_to_crore(price_str):
    price_str = price_str.strip().lower()
    if "lakhs" in price_str:
        # 提取数值并除以100转换为Crore单位
        num_val = float(price_str.replace("lakhs", "").strip())
        return num_val / 100
    elif "crore" in price_str:
        # 直接提取数值返回
        num_val = float(price_str.replace("crore", "").strip())
        return num_val
    # 无匹配单位时返回空值,可根据实际需求调整
    return pd.NA

# 应用转换到Price列,生成纯数字的Crore单位金额列
df["Price_Crore"] = df["Price"].apply(convert_to_crore)

方案2:向量化操作(性能更高,适合百万级以上大数据量)

代码如下:

# 提取数值部分
df["num"] = df["Price"].str.extract(r"(\d+\.?\d*)").astype(float)
# 提取单位并统一转为小写
df["unit"] = df["Price"].str.extract(r"([a-zA-Z]+)").str.lower()
# 按单位规则转换金额
df["Price_Crore"] = df.apply(
    lambda row: row["num"] / 100 if row["unit"] == "lakhs" else row["num"],
    axis=1
)
# 清理中间生成的辅助列
df.drop(columns=["num", "unit"], inplace=True)

两种方案最终都会生成新列Price_Crore,存储单位为Crore的纯数字金额值。如果不需要保留原始Price列,可直接赋值给df["Price"]覆盖原列。

内容的提问来源于stack exchange,提问作者Kunal Parihar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 05:36:03