我想打印用Pandas分组的结果。

我有一个数据框架:

import pandas as pd
df = pd.DataFrame({'A': ['one', 'one', 'two', 'three', 'three', 'one'], 'B': range(6)})
print(df)

       A  B
0    one  0
1    one  1
2    two  2
3  three  3
4  three  4
5    one  5

当按“A”分组后打印时,我有以下内容:

print(df.groupby('A'))

<pandas.core.groupby.DataFrameGroupBy object at 0x05416E90>

如何打印分组的数据框架?

如果我这样做:

print(df.groupby('A').head())

我获得的数据帧好像它没有分组:

             A  B
A                
one   0    one  0
      1    one  1
two   2    two  2
three 3  three  3
      4  three  4
one   5    one  5

我期待的是:

             A  B
A                
one   0    one  0
      1    one  1
      5    one  5
two   2    two  2
three 3  three  3
      4  three  4

当前回答

为Groupby对象分配一个变量并使用.first()方法。例子:

 a = df_apps_clean[['App', 'Installs']].groupby('Installs')
 a.first()  <----

其他回答

我确认了head()的行为在0.12和0.13版本之间发生了变化。我看这像只虫子。我制造了一个问题。

但是groupby操作实际上并不返回按组排序的DataFrame。这里的.head()方法有点误导人——它只是一个方便的特性,可以让您重新检查分组的对象(在本例中为df)。groupby的结果是一个单独类型的对象,一个groupby对象。必须应用、转换或筛选才能返回到数据帧或系列。

如果你想做的只是按列A中的值排序,你应该使用df.sort('A')。

df.groupby('key you want to group by').apply(print)

正如其他成员所提到的,这是可视化groupby对象的最简单的解决方案。

df.groupby('A').apply(display)

提供简洁的格式

使用get_group()方法 你可以有这样的东西

new_group = df.groupby(['A'])
get_group('')

将您想要获取的组的名称放在方法中

你只需要将DataFrameGroupBy对象转换为列表,你可以简单地打印它。 ls_grouped_df = list(df.groupby('A')) 打印(ls_grouped_df)