【发布时间】:2021-01-21 09:42:39
【问题描述】:
我在 pandas 中有这个数据框:
day customer amount
0 1 cust1 500
1 2 cust2 100
2 1 cust1 50
3 2 cust1 100
4 2 cust2 250
5 6 cust1 20
为方便起见:
df = pd.DataFrame({'day': [1, 2, 1, 2, 2, 6],
'customer': ['cust1', 'cust2', 'cust1', 'cust1', 'cust2', 'cust1'],
'amount': [500, 100, 50, 100, 250, 20]})
我想创建一个新列“amount2days”,以便汇总过去两天每位客户的金额,以获得以下数据框:
day customer amount amount2days ----------------------------
0 1 cust1 500 500 (no past transactions)
1 2 cust2 100 100 (no past transactions)
2 1 cust1 50 550 (500 + 50 = rows 0,2
3 2 cust1 100 650 (500 + 50 + 100, rows 0,2,3)
4 2 cust2 250 350 (100 + 250, rows 1,4)
5 6 cust1 20 20 (notice day is 6, and no day=5 for cust1)
即我想执行以下(伪)代码:
df['amount2days'] = df_of_past_2_days['amount'].sum()
对于每一行。这样做最方便的方法是什么?
我希望对一天进行求和,但天数不一定要在每个新行中递增,如示例所示。我仍然想总结过去 2 天的金额。
【问题讨论】:
-
这能回答你的问题吗? pandas rolling sum of last five minutes