Преобразования DataFrame с использованием информации из group_by - PullRequest
0 голосов
/ 20 марта 2019

У меня есть набор данных для двоичной классификации, который выглядит следующим образом:

group_id    pos_in_group    ...    target
...         ...                    ...
172          0                      0
172          1                      0
172          2                      1
172          3                      0
172         ...                    ...
172         719                     0

Так получилось, что в группе только одна запись может иметь target == 1, и они с большей вероятностью произойдут на первых позициях. Но модель, используемая для предсказания, не учитывает это. Таким образом, в одной группе может быть несколько записей с прогнозом target == 1.

group_id    pos_in_group    ...    target
...         ...                    ...
172          0                      0
172          1                      0
172          2                      1
172          3                      0
172          4                      1
172          5                      0
172         ...                    ...
172         719                     0

С df[df['target'] == 1].groupby(['group_id'])['pos'].min() я могу получить первое вхождение target == 1 в каждой группе. Как я могу использовать это, чтобы назначить target == 0 всем записям с более высоким положением в каждой группе?

Кроме того, как с помощью 1 / df.groupby(['group_id'])['target'].sum() можно масштабировать столбец в каждой группе по разному значению?

1 Ответ

0 голосов
/ 20 марта 2019

Если я вас правильно понимаю.Для первого вопроса вы можете использовать df.groupby.min и после этого заполнить столбец target условно np.where:

target_min = df[df.target == 1].groupby('group_id').pos_in_group.min()

df['target'] = np.where(df.pos_in_group.isin(target_min), 1, 0)

print(df)
   group_id  pos_in_group  target
0       172             0       0
1       172             1       0
2       172             2       1
3       172             3       0
4       172             4       0
5       172             5       0
6       172           719       0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...