具有动态组成员资格的Pandas groupby

具有动态组成员资格的Pandas groupby,pandas,pandas-groupby,Pandas,Pandas Groupby,我想根据dfGroups定义的组成员资格,在列轴上对数据帧df进行分组: df Out[87]: A B 0 1 2 1 3 4 2 5 6 重要的是,列的组成员资格会随着行的变化而变化: dfGroups Out[106]: A B 0 group1 group2 1 group1 group3 2 group2 group3 我可以通过以下方式实现这一点: df.stack().groupby([pd.Grouper(lev

我想根据dfGroups定义的组成员资格,在列轴上对数据帧df进行分组:

df
Out[87]: 
   A  B
0  1  2
1  3  4
2  5  6
重要的是,列的组成员资格会随着行的变化而变化:

dfGroups
Out[106]: 
        A       B
0  group1  group2
1  group1  group3
2  group2  group3
我可以通过以下方式实现这一点:

df.stack().groupby([pd.Grouper(level=0), dfGroups.stack()]).mean().unstack()
Out[107]: 
   group1  group2  group3
0     1.0     2.0     NaN
1     3.0     NaN     4.0
2     NaN     5.0     6.0

但是它感觉很笨重,我想知道是否有更惯用的方法来完成它。

这是另一条你可以走的路线,但不确定惯用的方法:

(
    pd.concat((df.stack(), dfGroups.stack()), axis=1)
    .droplevel(-1)
    .pivot(columns=1, values=0)
)



1   group1  group2  group3
0    1.0    2.0     NaN
1    3.0    NaN     4.0
2    NaN    5.0     6.0

你的解决方案在我看来相当不错;在现实生活中,我会在每行的每个组中有多个组成员