通过它支持的方法,看起来没有人反对在派生的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
答案 0 :(得分:4)
您应该将DataFrame重塑为整洁的数据集。经常询问重塑部分(1,2,3)。
在整洁的数据集中,每行应代表一条记录。为此,您可以创建一个'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
重塑部分不是很有效但据我所知,大熊猫还没有提供更好的方法。