Фильтровать комбинации столбцов с максимальным значением строки после группировки - PullRequest
1 голос
/ 28 февраля 2020

У меня есть фрейм данных, в котором для каждого идентификатора последовательности есть значения для Комбинации столбцов (SubSeq1, Duration1), (SubSeq2, Duration2), (SubSeq3, Duration3)

Я хочу отфильтровать данные согласно следующему условию:

для каждого отдельного идентификатора последовательности, для которого комбинации столбцов имеют наибольшую длительность

1 Ответ

3 голосов
/ 28 февраля 2020

Используйте wide_to_long сначала для одного столбца Sequence и Duration, затем сортируйте по нескольким столбцам по DataFrame.sort_values и, наконец, удаляйте дубликаты по DataFrame.drop_duplicates:

df = (pd.wide_to_long(df.reset_index(), stubnames=['SubSeq','Duration'], i='index', j='tmp')
        .sort_values(['Sequence','Duration'], ascending=[True, False])
        .drop_duplicates('Sequence')
        .reset_index(drop=True))
print (df)
   Sequence  SubSeq  Duration
0      1001     254        88
1      1002     175        96
2      1003     125        97
3      1004     257        85
...