Есть ли способ найти расположение первых n элементов в группе по - PullRequest
0 голосов
/ 02 мая 2019

Нужно извлечь атрибут из верхних n элементов кадра данных панд.

входные данные, как показано ниже

    KEY variable    value
0   1   A   0.476970
101 1   B   0.513333
202 1   C   0.376970
203 2   B   0.5667
101 2   A   0.513333
202 2   C   0.376970

...

Мне нужно положить сверхудва, как это

KEY variable    value
1   A   0.476970
1   B   0.513333
2   B   0.5667
2   A   0.513333
...

код, который я пробовал, выглядит следующим образом

test=pred_melt.groupby(['KEY'])['value'].nlargest(2)

, это дает мне

KEY     
1          101    0.513333
           0      0.476970
...
Name: value, Length: 198, dtype: float64

идея состояла в том, чтобы соединиться с оригиналом с индексом (101,0 и т. Д.), Чтобы добавить столбец переменной, но не может получить индекс из получения желаемого результата, как указано выше.не группа по столбцу является ключом, а не переменная.

1 Ответ

0 голосов
/ 03 мая 2019

Спасибо Supratim, да индекс, но я добавил остальные детали, которые мне пришлось тренироваться.пожалуйста, прокомментируйте, если считаете нужным.

test=pred_melt.groupby(['KEY'])['value'].nlargest(2)
test.index

возвращает MultiIndex согласно https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html структура

 MultiIndex(levels=[...], [...]],
            codes=[[...], [..]],
            names=[...])

Меня интересует

test.index.levels[1]

который дает мне второй столбец этого

KEY     
1          101    0.513333
           0      0.476970
...
Name: value, Length: 198, dtype: float64

как 0,101 и т. д., который можно использовать для получения записей из pred_melt

    KEY variable    value
0   1   A   0.476970
101 1   B   0.513333
202 1   C   0.376970
203 2   B   0.5667
101 2   A   0.513333
202 2   C   0.376970

как

pred_melt.iloc[test.index.levels[1]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...