如何将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
相关产品推荐
相关产品推荐

