我有一个包含 id
、event
和 metric
列的数据集:
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
我需要按id
和event
对其进行分组以获得sum
、mean
、std
、metric
的 min
、max
聚合,不仅包括给定“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/