具有动态组成员资格的Pandas groupby
我想根据dfGroups定义的组成员资格,在列轴上对数据帧df进行分组:具有动态组成员资格的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
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
你的解决方案在我看来相当不错;在现实生活中,我会在每行的每个组中有多个组成员