Группировать по двум столбцам, игнорируя порядок пар - PullRequest
0 голосов
/ 07 декабря 2018

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

    start   stop   duration
0   A       B      1
1   B       A      2
2   C       D      2
3   D       C      0

Как лучше всего построить список из: i) пар start / stop;ii) количество стартовых / стоповых пар;iii) средняя продолжительность пар начала / остановки?В этом случае порядок не должен иметь значения: (A,B)=(B,A).

Желаемый вывод: [[start,stop,count,avg duration]]

В этом примере: [[A,B,2,1.5],[C,D,2,1]]

1 Ответ

0 голосов
/ 07 декабря 2018

sort первые два столбца (вы можете сделать это на месте, или создать копию и сделать то же самое; я сделал первое), затем groupby и agg:

df[['start', 'stop']] = np.sort(df[['start', 'stop']], axis=1)

(df.groupby(['start','stop'])
   .duration
   .agg(['count', 'mean'])
   .reset_index()
   .values
   .tolist())
# [['A', 'B', 2, 1.5], ['C', 'D', 2, 1.0]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...