Cae*_*rus 6 python group-by dataframe pandas pandas-groupby
假设我们有一个如下所示的数据框:
start stop duration
0 A B 1
1 B A 2
2 C D 2
3 D C 0
Run Code Online (Sandbox Code Playgroud)
构建以下列表的最佳方法是什么: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]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |