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

如何将Pandas DataFrame中带$和千位逗号的价格字符串转为数值

问题根因

转换失败是因为你仅处理了$符号,没有删除价格字符串中的千位分隔逗号,pd.to_numeric无法识别带逗号的数字字符串,因此抛出解析错误。

解决方法

一次性清理价格字符串中的$和千位分隔逗号,再转换为数值类型即可,代码如下:

import pandas as pd

# 测试数据
df = pd.DataFrame({'id':['A', 'B', 'C', 'D', 'E'], 'price':['$106.00', '$156.00',
'$166.00', '$106.00', '1,190.00']})

# 核心逻辑:用正则匹配删除所有$和逗号,再转数值
df['price'] = pd.to_numeric(df['price'].str.replace(r'[$,]', '', regex=True))

# 如果需要强制保留两位小数可补充round方法
# df['price'] = df['price'].round(2)

补充说明

转换完成后price列为float数值类型,数值本身不会携带千位分隔符。如果你需要在展示时显示千位分隔和两位小数格式,可以额外设置Pandas的浮点显示格式:

pd.options.display.float_format = '{:,.2f}'.format

设置后打印df的输出效果和你期望的一致:

id    price
0  A   106.00
1  B   156.00
2  C   166.00
3  D   106.00
4  E 1,190.00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:39:03