处理大型DataFrame时groupby后sum求和失效问题求助
问题分析与解决:Pandas分组求和变成字符串拼接
核心问题
你的Available列是字符串类型(Pandas中显示为object),而非数值类型,所以调用sum()时会执行字符串拼接操作,而非你期望的数值求和。小批量数据可能刚好没有触发类型识别错误,但全量600+行数据里存在导致类型异常的内容。
解决步骤
确认列数据类型
先执行以下代码查看各列类型,确认Available是否为object:print(df.dtypes)转换列类型为数值型
用pd.to_numeric强制转换,同时处理可能存在的非数值内容(比如空格、特殊字符、空值):import pandas as pd # 将字符串转为数值,无法转换的内容设为NaN df['Available'] = pd.to_numeric(df['Available'], errors='coerce') # 可选:用0填充空值,再转为整数类型 df['Available'] = df['Available'].fillna(0).astype(int)重新执行分组求和
转换完成后再运行你的分组代码,就能得到正确的数值求和结果:df2 = df.groupby(['Code', 'Item', 'Size', 'Location'])['Available'].sum().reset_index() print(df2)
为什么小数据正常?
小样本中的Available值都是纯数字,Pandas自动识别成了数值类型;但全量数据里可能存在隐藏的异常内容(比如某行的Available字段有空格、字母,或者格式错乱),导致Pandas将整列识别为字符串类型,最终触发字符串拼接的sum()行为。
内容的提问来源于stack exchange,提问作者KPy
相关产品推荐
相关产品推荐

