Столбец Groupby хранит несколько строк с минимальным значением - PullRequest
0 голосов
/ 17 января 2019

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

Это мой кадр данных панд

id1 id2 num1
1   1   9 
1   1   4
1   2   4
1   2   3
1   3   7
2   6   9
2   6   1
2   6   5
2   9   3
2   9   7
3   2   8
3   4   2
3   4   7
3   4   9
3   4   10

То, что я хочу иметь:

id1 id2 num1
1   1   9 
1   1   4
2   6   9
2   6   1
2   6   5
3   2   8

Я попытался сохранить минимальное значение, найти idxmin () или удалить дубликаты, но в результате получается только одна строка для id1 и id2.

firstS.groupby('id1')['id2'].transform(min)

Большое спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Самый простой способ:

df = df.merge(df.groupby("id1").id2.min().reset_index())
0 голосов
/ 17 января 2019

Вы близки, нужно только сравнить id2 столбец с transform Series и отфильтровать по boolean indexing:

df = firstS[firstS['id2'] == firstS.groupby('id1')['id2'].transform(min)]
print (df)
    id1  id2  num1
0     1    1     9
1     1    1     4
5     2    6     9
6     2    6     1
7     2    6     5
10    3    2     8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...