按行和列过滤最大值

Filter max values by row and columns

我有这个数据框。

In [6]: df
Out[6]:
    Beam  Pos Comb   As  
0    B1    1    1    3          
1    B1    1    1    2          
2    B1    2    1    5          
3    B1    2    1    8          
4    B1    1    2    10         
5    B1    1    2    1         
6    B1    2    2    3          
7    B1    2    2    2
8    B2    1    1    1          
9    B2    1    1    2          
10   B2    2    1    5          
11   B2    2    1    6          
12   B2    1    2    8         
13   B2    1    2    1         
14   B2    2    2    3          
15   B2    2    2    2           

我需要在不同的组合中搜索每个波束和位置的最大值。

    Beam  Pos Comb   As
0    B1    1    2    10         
1    B1    2    1    8         
2    B2    1    2    8          
3    B2    2    1    6  

我不知道如何比较光束、位置和组合的 "As" 值。

或许将光束、位置分组,然后取最大值?

你必须在多级索引上使用groupby方法:

d = df.groupby(by= [ "Beam",  "Pos", "Comb"])
g=d.agg({"As":"max"})
g.reset_index(inplace=True)

第一行将具有相同 (Beam,Pos,Comb) 索引的项目组合在一起, 第二行 select 每个组的最大值 Asreset_index 撤消数据帧中的组

这个怎么样?

groups = df.groupby(by=['Beam', "Pos"])
idx = []
for group in groups:
    idx += [group[1].As.argmax()]

比显示 df.iloc[idx]

您应该使用本机 pandas 函数而不是重新创建轮子,以使其极其简单易记:

df.groupby(['Beam', 'Pos', 'Comb']).max()