按行和列筛选最大值



我有这个数据框架。

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)索引的项组合在一起,第二行选择每个组上的最大Asreset_index撤消数据框中的组

这个怎么样?

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

比秀df.iloc[idx]

您应该使用原生pandas函数,而不是重新创建wheel,以使其非常简单且易于记忆:

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

最新更新