我所需要的就是将一个DataFrameGroupBy对象转换为一个DataFrame,以便使用df.to_excel()导出到excel。当我尝试执行df_groupby = pd.DataFrame(df_groupby)时,我得到了错误:PandasError: DataFrame constructor not properly called!
原始df:
df = DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C' : randn(8), 'D' : randn(8)})
In [2]: df
Out[2]:
A B C D
0 foo one 0.469112 -0.861849
1 bar one -0.282863 -2.104569
2 foo two -1.509059 -0.494929
3 bar three -1.135632 1.071804
4 foo two 1.212112 0.721555
5 bar two -0.173215 -0.706771
6 foo one 0.119209 -1.039575
7 foo three -1.044236 0.271860grouped = df.groupby('A')
我想导出grouped到excel。
发布于 2015-05-02 08:56:43
我不确定你想要实现什么。所以这里有一组可能的答案。
但首先是坏消息。groupby对象不是DataFrame,无法将其保存为excel (或简单地转换为DataFrame)。
1)如果您只想对DataFrame进行排序,这也将对事物进行“分组”
df.sort('A').to_excel('filename.xls')2)如果您想摆脱Excel中的默认索引
df.sort('A').to_excel('filename.xls', index=None)3)如果希望在Excel中将每个组放在各自的工作表中
grouped = df.groupby('A')
from pandas import ExcelWriter
writer = ExcelWriter('filename.xls')
for k, g in grouped:
g.to_excel(writer, k)
writer.save()4)您可以将多个组连接成一个新的DataFrame。但这与上面的第一个排序选项基本相同
grouped = df.groupby('A')
new_df = pd.DataFrame()
for k, g in grouped:
new_df = pd.concat([new_df, g], axis=0)
new_df.to_excel('filename.xls')5)无意义的第一个练习……传递转换函数...但这只会把你的DataFrame还给你。
df = df.set_index('A')
grouped = df.groupby(level=0)
grouped.transform(lambda x: x).to_excel('filename.xls')6)另一种无意义的练习...这一次使用直通过滤器函数...
# start with initial data
grouped = df.groupby('A')
grouped.filter(lambda x: True).to_excel('filename.xls')7)如果你想查看groupby的内部,你可以执行以下操作...(但请注意,这不会保存到Excel) ...
# start with initial data
grouped = df.groupby('A')
groups = dict(list(grouped))
print[groups['foo'])
print[groups['bar'])https://stackoverflow.com/questions/29955457
复制相似问题