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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:03:11