假设我有my_df
:
my_df = pd.DataFrame({'X': ['a', 'a', 'b', 'b'], 'Y1': [1, 2, 3, 4], 'Y2': [1, 2, 3, 4], 'Z': [1, 0, 1, 0]})
my_df
X Y1 Y2 Z
0 a 1 1 1
1 a 2 2 0
2 b 3 3 1
3 b 4 4 0
我正在寻找一种在
pivot_table
的每一列上使用可能具有不同条件的aggfunc
的方法。例如,假设我想按X
分组数据并获得平均值。对于Y1
,我想应用直接的mean
聚合,而对于Y2
,我想应用以mean
为条件的Z==1
聚合。在这种情况下,输出为: Y1 Y2
X
a 1.5 1
b 3.5 3
如何调整以下代码以适应这种情况?
my_df.pivot_table(index = 'X', aggfunc={'Y1': 'mean', 'Y2': 'mean'})
最佳答案
如何调整以下代码以适应这种情况?
一种方法是mask
Y2
wrt Z
列,然后旋转
(my_df.assign(Y2=my_df['Y2'].where(my_df['Z'].eq(1)))
.pivot_table(index = 'X', aggfunc={'Y1': 'mean', 'Y2': 'mean'}))
Y1 Y2
X
a 1.5 1.0
b 3.5 3.0
关于python - Aggfunc中具有不同条件的Pandas数据透视表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60211951/