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

解决DataFrame列Object转Float时因点逗号混淆产生NaN及聚合计算问题

解决办法:正确转换带逗号的金额列并按客户聚合计算

这个问题我碰到过,原因很明确——你的Amount列用逗号作为小数分隔符,而pd.to_numeric()默认只识别点号(.)作为小数分隔符,所以所有值都被判定为无效数值,最终转成了NaN。下面给你两种靠谱的解决办法,再附上聚合计算的步骤:

一、正确转换Amount列为float类型

方法1:先替换逗号为点号,再转换

适合确定所有金额值都用逗号做小数分隔符的场景:

import pandas as pd

# 替换逗号为点号,再转换为float类型
df['Amount'] = df['Amount'].str.replace(',', '.').astype(float)

方法2:直接指定decimal参数

更严谨的方式,通过pd.to_numeric()的decimal参数明确告诉pandas用逗号做小数分隔符:

df['Amount'] = pd.to_numeric(df['Amount'], errors='coerce', decimal=',')

转换完成后,你可以用df.dtypes检查Amount列的类型,应该会显示float64,且数值都保留了原来的31.65。

二、按客户聚合计算总和与平均值

转换成功后,用groupby分组,配合agg方法就能一次性算出总和和平均值:

# 按customer列分组(如果实际要按ID分组,替换成'ID'即可)
agg_result = df.groupby('customer')['Amount'].agg(['sum', 'mean'])

运行后你会得到如下结果:

sum   mean

customer
026 158.25 31.65

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:28:10