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

含千分位逗号的DataFrame价格列拆分问题求助

解决方案:正确拆分含千分位逗号的价格列

问题出在你直接用逗号作为拆分符——价格本身的千分位逗号会被误判成分隔符,导致拆分混乱。要解决这个问题,得精准匹配两个价格之间的分隔逗号(也就是紧跟$的逗号),用正则表达式来拆分:

核心代码

import pandas as pd

# 匹配 ",$" 作为分隔符,只拆分一次
data_phones[['actual_price', 'installment_price']] = data_phones['prices'].str.split(r',\$', n=1, expand=True)

# 补回第二个价格丢失的开头$
data_phones['installment_price'] = data_phones['installment_price'].apply(lambda x: f'${x}' if pd.notna(x) else x)

代码说明

  • r',\$':正则表达式,精准匹配逗号后紧跟美元符号的位置,这正是两个价格的分隔点,不会误拆千分位逗号。
  • n=1:限制只拆分一次,适配你的数据中最多两个价格的场景。
  • 补回$:拆分后第二个价格会丢失开头的$,用lambda表达式补上,保证格式统一。

可选:将价格转为数值类型

如果需要把价格转成可计算的数值,可进一步处理:

def clean_price(price_str):
    if pd.isna(price_str):
        return None
    # 移除$和千分位逗号,转为浮点数
    return float(price_str.replace('$', '').replace(',', ''))

data_phones['actual_price'] = data_phones['actual_price'].apply(clean_price)
data_phones['installment_price'] = data_phones['installment_price'].apply(clean_price)

测试结果

用你的示例数据测试,拆分后原始格式的结果:

pricesactual_priceinstallment_price
$1,149.99,$1,249.99$1,149.99$1,249.99
$124.99$124.99NaN
$549.95$549.95NaN
$149.00,$159.99$149.00$159.99

转为数值后的结果:

pricesactual_priceinstallment_price
$1,149.99,$1,249.991149.991249.99
$124.99124.99NaN
$549.95549.95NaN
$149.00,$159.99149.00159.99

内容的提问来源于stack exchange,提问作者Fanny Oliver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:33:23