Pandas分组求和失效:带kt单位的object类型列处理问题
解决方法
问题核心是Value列是object(字符串)类型,直接调用sum会执行字符串拼接而非数值求和,必须先将该列转换为数值类型:
第一步:清理并转换Value列
先移除字符串中的'kt'后缀,再转为数值类型。如果数据里包含空格(比如"123 kt"格式),可以用正则匹配去掉所有空格和'kt':# 移除所有空格与'kt'后缀,转为float类型 df['Value'] = df['Value'].str.replace(r'\s*kt', '', regex=True).astype(float)如果存在无法转换的异常值(比如非数字字符),可以用
pd.to_numeric处理并将异常值转为NaN,后续按需处理:import pandas as pd df['Value'] = pd.to_numeric(df['Value'].str.replace(r'\s*kt', '', regex=True), errors='coerce') # 可选操作:删除含NaN的行,或用0填充 df = df.dropna(subset=['Value']) # 或者 df['Value'] = df['Value'].fillna(0)第二步:验证数据类型
确认转换后Value列已变为数值类型:print(df['Value'].dtype) # 正常输出应为 float64 或 int64第三步:执行分组求和
此时再执行groupby与sum操作,就能得到正确的数值求和结果:grouped_result = df.groupby(['Country', 'year'])['Value'].sum().reset_index()
内容的提问来源于stack exchange,提问作者Surbhi Jain
相关产品推荐
相关产品推荐

