熊猫遍历索引以查找值

时间:2020-06-20 09:49:03

标签: python pandas

我有一个非常大的实验数据数据框。我有一个Multi索引,它使用x,y,z列中的数据定义每个样本(A,B):

 A   B    x    y     z
0.1  0.1  0.1   0   -1
0.1. 0.1  0.2  -5    0
0.1  0.1  0.4 -10    0 
0.1  0.2  0.6   0   -1
0.1  0.2  0.3  -4 -0.4
0.1  0.2  0.1  -9    0
0.1  0.5  0.2   0    0
0.1  0.5  0.4  -2    0
0.1  0.5  0.3  -5    0
0.2  0.1  0.2  -1   -1
0.2  0.1  0.1  -2   -2
0.2  0.1  0.4  -3    0

... 

我要填补的条件很复杂,但本质上是:

  • 如何遍历A和B的每个值,以找到y的最大值,其中z的值= 0,然后返回满足此条件的所有行的df

预期输出:

 A   B    x    y     z

0.1. 0.1  0.2  -5   0
0.1  0.2  0.1  -9   0
0.1  0.5  0.2   0   0
0.2  0.1  0.4  -3   0

谢谢。

3 个答案:

答案 0 :(得分:3)

您可以尝试

df.loc[df[df["z"] == 0].groupby(["A","B"])['y'].idxmax()].reset_index(drop=True)

答案 1 :(得分:0)

df[(df['z'] == 0) & (df['y'] == df['y'].max())]

答案 2 :(得分:0)

output=(df.loc[df['z']==0]).groupby(['A','B'])['y'].max()

感谢Narendra Prasath向我指出了正确的方向。