Предположим, у нас есть dataframe, который выглядит так:
start stop duration
0 A B 1
1 B A 2
2 C D 2
3 D C 0
Какой лучший способ создать список: i) пары запуска/остановки; ii) количество пар начала/остановки; iii) средняя продолжительность пар старта/остановки? В этом случае порядок не должен иметь значения: (A,B)=(B,A)
.
Желаемый выход: [[start,stop,count,avg duration]]
В этом примере: [[A,B,2,1.5],[C,D,2,1]]
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]]