首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将dataframe groupby转换为dataframe

将dataframe groupby转换为dataframe
EN

Stack Overflow用户
提问于 2015-04-30 06:10:04
回答 1查看 1.3K关注 0票数 0

我所需要的就是将一个DataFrameGroupBy对象转换为一个DataFrame,以便使用df.to_excel()导出到excel。当我尝试执行df_groupby = pd.DataFrame(df_groupby)时,我得到了错误:PandasError: DataFrame constructor not properly called!

原始df:

代码语言:javascript
复制
 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.271860

grouped = df.groupby('A')

我想导出grouped到excel。

EN

回答 1

Stack Overflow用户

发布于 2015-05-02 08:56:43

我不确定你想要实现什么。所以这里有一组可能的答案。

但首先是坏消息。groupby对象不是DataFrame,无法将其保存为excel (或简单地转换为DataFrame)。

1)如果您只想对DataFrame进行排序,这也将对事物进行“分组”

代码语言:javascript
复制
df.sort('A').to_excel('filename.xls')

2)如果您想摆脱Excel中的默认索引

代码语言:javascript
复制
df.sort('A').to_excel('filename.xls', index=None)

3)如果希望在Excel中将每个组放在各自的工作表中

代码语言:javascript
复制
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。但这与上面的第一个排序选项基本相同

代码语言:javascript
复制
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还给你。

代码语言:javascript
复制
df = df.set_index('A')
grouped = df.groupby(level=0)
grouped.transform(lambda x: x).to_excel('filename.xls')

6)另一种无意义的练习...这一次使用直通过滤器函数...

代码语言:javascript
复制
# start with initial data
grouped = df.groupby('A')
grouped.filter(lambda x: True).to_excel('filename.xls')

7)如果你想查看groupby的内部,你可以执行以下操作...(但请注意,这不会保存到Excel) ...

代码语言:javascript
复制
# start with initial data
grouped = df.groupby('A')
groups = dict(list(grouped))
print[groups['foo'])
print[groups['bar'])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29955457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档