按行和列过滤最大值
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 每个组的最大值 As
和 reset_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()
我有这个数据框。
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 每个组的最大值 As
和 reset_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()