我有这个数据框架。
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)
索引的项组合在一起,第二行选择每个组上的最大As
和reset_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()