0
說我有以下的數據幀向下傳播GROUPBY聚合的結果
X Y
A B C
bar one P 0.630667 1.457555
three Q 1.163132 -0.944378
T 0.423349 0.432508
flux six P -1.055297 -0.419939
three T 2.064113 0.465885
foo five Q 0.271349 0.472808
S -0.985560 -0.301500
P -0.482336 -0.089823
R 0.745047 -0.713639
我需要的B
針對X
具有最高值的每個值的範圍內確定C
水平的價值,並傳播回每一行。
結果應該是:
X Y W
A B C
bar one P 0.630667 1.457555 P
three Q 1.163132 -0.944378 Q
T 0.423349 0.432508 Q
flux six P -1.055297 -0.419939 P
three T 2.064113 0.465885 T
foo five Q 0.271349 0.472808 R
S -0.985560 -0.301500 R
P -0.482336 -0.089823 R
R 0.745047 -0.713639 R
我怎麼能這樣做?
到目前爲止,我有大意如下的內容:
df.groupby(level=['A', 'B']).agg(lambda x: x.max())
,但我不知道怎麼去「傳播」下來的結果,以原始行。
感謝。我特別感興趣的解決方案適用於任何** lambda /函數,我使用聚合(對不起,最大的lambda只是爲了舉例)。這將適用於任何lambda? –
謝謝。它確實有效。我無法相信它就像使用'transform'而不是'lambda'一樣簡單! –