Pandas分组后二次分组报错的解决方法及目标结果实现
问题修复方案
错误原因
你无法对DataFrameGroupBy对象再次调用groupby方法,这个类型本身不提供该接口,因此触发AttributeError。
正确实现方式
要得到ax=3,ay=3,bx=9,cy=6的结果,只需一次性按col1和col2联合分组,再对col3求和即可,无需嵌套调用groupby。
具体代码示例
import pandas as pd # 构造目标DataFrame df = pd.DataFrame({ 'col1': ['a', 'a', 'a', 'b', 'b', 'c'], 'col2': ['x', 'x', 'y', 'x', 'x', 'y'], 'col3': [1, 2, 3, 4, 5, 6] }) # 按col1和col2联合分组,计算col3的总和 sum_result = df.groupby(['col1', 'col2'])['col3'].sum() # 转换为需要的键值对格式 final_result = {f"{k1}{k2}": v for (k1, k2), v in sum_result.items()} print(final_result) # 输出: {'ax': 3, 'ay': 3, 'bx': 9, 'cy': 6}
代码说明
groupby(['col1', 'col2']):同时以两列作为分组依据,直接获取每个col1+col2组合对应的分组数据。['col3'].sum():对每个分组内的col3列求和,得到目标数值。- 最后通过字典推导式将分组的二元键合并为
ax这类字符串,生成你需要的结果格式。
内容的提问来源于stack exchange,提问作者user20324169
相关产品推荐
相关产品推荐

