为什么改写一个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
所做的事情。 如果你想这样做,你必须自己做。