python - 在 Pandas 中聚合到当前行而不使用循环

标签 python pandas aggregation

我有一个包含 ideventmetric 列的数据集:

df = pd.DataFrame([['a','x', 1], 
                  ['a','x',2],  
                  ['b','y',3],  
                  ['a','z',4],  
                  ['a','j',5]], columns = ['id','event','metric'])

   id event metric
0   a   x   1
1   a   x   2
2   b   y   3
3   a   z   4
4   a   j   5

我需要按idevent对其进行分组以获得summeanstd metricminmax 聚合,不仅包括给定“id-event”组的值,还包括给定 id所有先前事件指标值。换句话说,我需要聚合直到给定行的所有行。

期望的输出:

   id event sum mean        std       min   max
0   a   j   12  3.000000    1.825742    1   5
1   a   x   3   1.500000    0.707107    1   2
2   a   z   7   2.333333    1.527525    1   4
3   b   y   3   3.000000    NaN         3   3

当我为每个组过滤数据帧时,我尝试了 for 循环方法。但问题是我有大约 20M 行,所以需要很长时间才能计算。我正在尝试无循环解决这个问题。

最佳答案

您需要使用groupby

df.groupby(["id", "event"])["metric"].describe()

关于python - 在 Pandas 中聚合到当前行而不使用循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58887356/

相关文章:

java - 是否存在基于 Java 的数据聚合和报告框架?

clone - 封装聚合/组合

python - 有没有办法使用 kafka-python 库创建日志压缩主题?

python - 尝试安装pygame

Python: 'ascii' 编解码器无法对字符进行编码

python - 使用 dlib 面部标志检测仅将下巴保存为图像,其余部分为透明

python - 根据单元格值从 Pandas DataFrame 中删除行

python - 如何旋转数据框

python - pd.Series.str.lower.replace ('str' , 'replace_str' ) 不起作用但 pd.Series.str.replace。 ('STR' , 'replace_str' ) 呢?

elasticsearch - Elasticsearch哪个是更好的聚合