【发布时间】:2014-04-10 00:12:24
【问题描述】:
假设我有以下 DataFrame
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())
但我不知道如何将结果“传播”到原始行。
【问题讨论】: