Фильтрация в Пандах - PullRequest
       4

Фильтрация в Пандах

0 голосов
/ 09 октября 2019

То, что я пытаюсь сделать, вероятно, лучше всего иллюстрируется примером. Скажем, у нас есть следующий фрейм данных:

ID            Category          Label          Price
----------------------------------------------------
00001         Low               Alpha          1.00
00001         Low               Beta           1.50
00001         Med               Chi            2.00
00001         Med               Delta          2.50
00001         High              Epsilon        3.00
00001         High              Phi            3.50
00002         Low               Alpha          1.00
00002         Low               Beta           1.50
00002         Med               Chi            2.50
00002         Med               Delta          2.50
00002         High              Epsilon        3.00
00002         High              Phi            3.50

Для каждого идентификатора и каждого ярлыка в каждом идентификаторе я хочу вернуть ярлык с самой высокой ценой вместе с ценой. Например:

ID            Category          Label          Price
----------------------------------------------------
00001         Low               Beta           1.50
00001         Med               Delta          2.50
00001         High              Phi            3.50
00002         Low               Beta           1.50
00002         Med               Delta          2.50
00002         High              Phi            3.50

Изначально я думал об этом с помощью вложенных операторов FOR - как итерация по многомерному массиву, но я знаю, что это не Панда.

Ответы [ 2 ]

3 голосов
/ 09 октября 2019

IIUC, вы можете попробовать это:

df.loc[df.groupby(['ID','Category'], group_keys=False)['Price'].idxmax()]

Вывод:

       ID Category  Label  Price
5   00001     High    Phi    3.5
1   00001      Low   Beta    1.5
3   00001      Med  Delta    2.5
11  00002     High    Phi    3.5
7   00002      Low   Beta    1.5
8   00002      Med    Chi    2.5
1 голос
/ 09 октября 2019

Аналогично, вы можете группировать ID, категорию и метку, а затем агрегировать по цене

(df
.groupby(['ID','Category','Label'])
.agg(Price =('Price','max'))
).reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...