如何将pandas透视/分组结果转为DataFrame而非Series?
如何将pandas分组/透视结果转为DataFrame而非Series
针对你遇到的问题,我整理了几个直接有效的解决办法,不管是处理groupby结果还是做透视表都适用:
一、解决你的groupby场景:从Series转DataFrame
你当前的代码data = df.groupby(['Mes','Clientes'])['Quantidade'].sum()返回Series,是因为你选中了单一列(单括号['Quantidade']),聚合后会得到带多级索引的Series。有两种快速修正方式:
方法1:用reset_index()将索引转为列
这是最常用的方式,直接把Series的多级索引(Mes和Clientes)转换成普通列,自动得到DataFrame:
data = df.groupby(['Mes','Clientes'])['Quantidade'].sum().reset_index()
方法2:选中列时用双括号,确保操作对象是DataFrame
把要聚合的列放在双括号里,这样groupby操作的是DataFrame的子集,聚合结果自然也是DataFrame:
data = df.groupby(['Mes','Clientes'])[['Quantidade']].sum()
二、透视表得到DataFrame的方法
如果需要做透视操作,推荐直接用pivot_table,它默认返回的就是DataFrame,还能灵活设置聚合函数、行/列索引:
import pandas as pd # 按Mes和Clientes分组,汇总Quantidade,返回DataFrame data_pivot = pd.pivot_table(df, values='Quantidade', index=['Mes', 'Clientes'], aggfunc='sum')
如果用pivot方法,只要确保参数设置正确(比如指定values、index等),也会返回DataFrame,不过pivot_table处理重复分组的情况更稳定。
内容的提问来源于stack exchange,提问作者Lucas Almeida
相关产品推荐
相关产品推荐

