我有这个数据框。
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
我无法弄清楚如何比较Beam,position和combination的“As”值。
也许分组光束,位置然后得到最大值?
答案 0 :(得分:2)
您必须在多级索引上使用groupby
方法:
d = df.groupby(by= [ "Beam", "Pos", "Comb"])
g=d.agg({"As":"max"})
g.reset_index(inplace=True)
第一行将具有相同(Beam,Pos,Comb)
索引的项组合在一起,
第二行选择每个组的最大As
,reset_index
撤消数据框中的组
答案 1 :(得分:0)
这个怎么样?
groups = df.groupby(by=['Beam', "Pos"])
idx = []
for group in groups:
idx += [group[1].As.argmax()]
比显示
df.iloc[idx]
答案 2 :(得分:0)
您应该使用本机pandas功能而不是重新创建轮子,以使这非常简单易记:
df.groupby(['Beam', 'Pos', 'Comb']).max()