无需操作即可将Groupedby对象转换为DataFrame或系列

时间:2018-11-05 12:31:25

标签: python pandas group-by pandas-groupby

我是Python的初学者,遇到了一个似乎无法解决的问题。

我根据两列对DataFrame进行了分组。我对其中一些执行了.mean().std()之类的运算,结果从该运算中得到一个Series。 我可以在公式中使用这些。

但是,我还需要将这些组变成没有操作的Series或DataFrame。当我使用以下命令打印组时:

print(object.apply(list))

结果是所需的布局。

但是如何转换这些GroupedBy对象,使其成为Series或DataFrame?

我希望有人能帮助我。

谢谢!

2 个答案:

答案 0 :(得分:0)

要通过groupby创建数据框:

# Simple count 
new_df = pandas.DataFrame({'NB' : df.groupby(['col_name1']).count()})

# groupby col1 and take the mean of col2  
new_df = pandas.DataFrame({'Mean' : df.groupby(['col_name1'])['col_name2'].mean()})

答案 1 :(得分:0)

很遗憾,您没有提供示例数据或代码,因此不确定我是否正确理解了您的问题。

但是通过分组,您将得到一个包含多个数据框的对象,如果愿意,可以包含“子数据框”,因此groupby对象本身不再可以显示为简单的数据框。但是您可以对其进行迭代,获取可以轻松打印的名称和子数据框。
示例:

df = pd.DataFrame({'Col': ['blue', 'red', 'blue', 'red'], 'Val1': [12, 34, 56, 78],'Val2': [42, 53, 64, 75]})

    Col  Val1  Val2
0  blue    12    42
1   red    34    53
2  blue    56    64
3   red    78    75


for name, grp in df.groupby('Col'):
    print(name, grp, sep='\n', end='\n\n')
blue
    Col  Val1  Val2
0  blue    12    42
2  blue    56    64

red
   Col  Val1  Val2
1  red    34    53
3  red    78    75