2016-10-07 4 views
-1

У меня есть этот dataframe.Фильтровать максимальные значения по строкам и столбцам

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 

Я не могу понять, как я могу сравнить значения «как» для луча, положения и комбинации.

Возможно группировка лучей, положение и получение максимального значения?

ответ

0

Как насчет этого?

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

чем показать df.iloc[idx]

+0

Спасибо, Александр. Мне нужно максимальное значение для луча и положения. Но каждый луч имеет различную комбинацию с различными значениями «А» на позицию. – Eduardo

+0

@Eduardo, отредактированный код, попробуйте –

+0

Спасибо Alexander, это может быть другой вариант. Я попробую. – Eduardo

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 отменить группы в dataframe

+0

Спасибо JMat. Да, я знаю его. Но каждый луч имеет положение и различные комбинации. Мне нужно получить максимальное значение для каждого луча и поиск позиции в разных комбинациях. – Eduardo

+0

@ Эдуардо, извините, я не понял вопроса, я отредактировал свой ответ соответственно – JMat

+0

Спасибо !, Я думаю, что это то, что мне нужно. «g» - это результирующий кадр данных? – Eduardo

0

Вы должны использовать нативные функции панд вместо воссоздания колеса, чтобы сделать это очень просто и легко запомнить:

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

Этот метод показывает всю комбинацию. Мне нужен последний шаг, который выбирает комбинацию с максимальным значением. – Eduardo

+0

Он показывает максимальное значение для каждой комбинации. Что еще вы ищете? –

+0

Я решил проблему с ответом Александра Жукова. Спасибо @ A.Kot – Eduardo

Смежные вопросы