在Pandas DataFrame实现SQL SUM GROUP BY等价操作遇分组列无法访问问题
在Pandas中实现SQL的
SELECT SUM(x) ... GROUP BY y等价操作 正确实现代码
要对应SQL里SELECT SUM(x) GROUP BY y的逻辑,得按y列分组,再对x列求和,正确写法是:
# 仅聚合x列,同时保留y作为普通列 result = df.groupby("y")["x"].sum().reset_index()
别踩这个误区
很多人会错误写成df.groupby(["x"]).sum(),这完全搞反了逻辑:
- 这行代码是按
x分组,对所有数值列求和,和你要的GROUP BY y完全不是一回事,纯粹是把分组列和聚合目标列搞混了。
解决分组列无法访问的问题
如果执行df.groupby(["x"]).sum()这类代码,分组列会变成DataFrame的索引,不是普通列,所以直接df2["x"]会报错。解决办法有两种:
- 分组时加
as_index=False,让分组列保持为普通列:
df2 = df.groupby("y", as_index=False)["x"].sum() # 现在可以直接用df2["y"]和df2["x"]访问
- 对已生成的聚合结果用
reset_index(),把索引转成普通列:
df2 = df.groupby("y")["x"].sum().reset_index()
内容的提问来源于stack exchange,提问作者DarkTrick
相关产品推荐
相关产品推荐

