为什么改写一个pandasgroupby对象作为数据框写入excel?

如果我将csv文件读入pandas数据框,然后使用groupby(pd.groupby([column1,…])),为什么我不能在新的分组对象上调用to_excel属性。

import pandas as pd data = pd.read_csv("some file.csv") data2 = data.groupby(['column1', 'column2']) data2.to_excel("some file.xlsx") #spits out an error about series lacking the attribute 'to_excel' data3 = pd.DataFrame(data=data2) data3.to_excel("some file.xlsx") #works just perfectly! 

有人可以解释为什么大pandas需要经历从数据框到系列的整个转换过程吗?


我相信我的问题还不清楚。 重新构build的问题:当您使用pd.groupby()时,为什么大pandas会将数据框转换为不同types的对象(groupby对象)? 显然,您可以将此对象作为数据框来转换,其中分组的列成为(多级)索引。 为什么不这样做默认情况下(没有用户必须手动将其转换为数据框)?

为了回答你为什么groupby给你一个groupby对象而不是一个DataFrame的重新提出的问题:它是为了提高效率。 groupby对象不会复制关于原始数据的所有信息; 它基本上将索引存储在原始DataFrame中,指示每行所在的组。这允许您将一个groupby对象用于多个聚合组操作,每个操作可以使用不同的列(例如,可以执行g = df.groupby('Blah') ,然后分别执行g.SomeColumn.sum()g.OtherColumn.mean() )。

简而言之,groupby的要点是让你对这些组进行计算 。 简单地将单个列的值转换为索引级别并不是大多数人对groupby所做的事情。 如果你想这样做,你必须自己做。