GroupBy对象,其中条目可以属于多个组

时间:2016-10-08 20:05:23

标签: python pandas

通过它支持的方法,看起来没有人反对在派生的GroupBy对象中多次出现的原始数据框/系列的标签。例如,实际上是否可以从像<{p>}中的g这样的可迭代列构造GroupBy对象a

>>> x
       a b
0 [0, 1] 1
1 [1, 2] 2

这样g将代表一个GroupBy对象,其中a的每个条目都有一个条目?也就是说,我得到了像

这样的结果
>>> x.iterable_groupby('a').size()
a
0 1
1 2
2 1
>>> x.iterable_groupby('a').mean()
    b
0 1.0
1 1.5
2 2.0

1 个答案:

答案 0 :(得分:4)

您应该将DataFrame重塑为整洁的数据集。经常询问重塑部分(123)。

在整洁的数据集中,每行应代表一条记录。为此,您可以创建一个'grouper'列,如下所示:

x['a'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('grouper')
Out: 
   grouper
0        0
0        1
1        1
1        2

如果您将其与原始DataFrame相关联,则可以按照您的喜好对其进行分组:

x['a'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('grouper').join(x).groupby('grouper').mean()
Out: 
           b
grouper     
0        1.0
1        1.5
2        2.0

重塑部分不是很有效但据我所知,大熊猫还没有提供更好的方法。