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

Databricks中Pandas sum()与mean()函数返回异常结果的技术问询

解决Pandas分组sum()返回字符串拼接而非数值求和的问题

嘿,这个问题的根源很明确——你的goals_scored列数据类型是字符串(object),而Pandas对字符串类型调用sum()时,默认行为是拼接所有字符串,而非做数值求和。这就是为什么你看到一堆0和零散数字连在一起的结果,而value_counts()、sort_values()这类函数不受数据类型影响(它们只处理频次统计或字符串排序)。

一步步解决:

  1. 先确认列的类型
    先验证一下这个列的实际类型,运行这段代码:

    print(df_fpl['goals_scored'].dtype)
    # 或者查看全表信息更直观
    df_fpl.info()
    

    如果输出显示object,就坐实了是字符串类型的问题。

  2. 把字符串列转成数值类型
    使用pd.to_numeric()转换列,同时处理可能的非数值内容(比如空值、异常字符):

    # 转换为整数,无法转换的值设为NaN
    df_fpl['goals_scored'] = pd.to_numeric(df_fpl['goals_scored'], errors='coerce')
    

    要是你确定列里全是合法数值,也可以去掉errors='coerce',但加上它能避免转换失败报错,更稳妥。

  3. 重新执行分组求和
    现在再运行你的分组代码,就能得到你想要的数值求和结果了:

    df_fpl.groupby("team")["goals_scored"].sum()
    

额外小提示

如果转换后出现了NaN值,你可以根据需求用fillna()填充(比如填充0):

df_fpl['goals_scored'] = df_fpl['goals_scored'].fillna(0).astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:47:47