[英]Pandas time series cumsum of previous records matching a column of current row
我正在嘗試添加一個列,該列表示與給定列的行當前值匹配的先前記錄的累積總和,讓我們舉個例子。
我的數據是:
|t |label|qty|cumsum|
|2020-01-05|A |10 |10 |
|2020-01-06|B |5 |5 |
|2020-01-06|C |2 |2 |
|2020-01-07|A |-5 |5 |
|2020-01-07|A |2 |7 |
|2020-01-08|B |-30|-25 |
|2020-01-09|C |5 |7 |
cumsum
列將總結為“對 label 與當前行相同的所有過去記錄進行累積總和”
理想情況下,為了代碼清晰,我想要一個表達式,例如df['cumsum']=df.loc[(df['label']==current label) & (df['t'] <= current index)].cumsum()
不是 go 通過for ix,row in df:
另一個方面是從頭開始累加,dataframe可以是20條記錄,也可以是500k條記錄。
另外,為了清楚起見,我在示例中只放了 3 個標簽,但我的數據集中可以有幾十個標簽
我發現了一些其他類似的問題,但它們並不完全適合我的需要:
Python Pandas:基於多個條件的累積和=>它“只是”計算過去某個條件為真的時間,而不是特定列的累積和
Pandas 按組的時間累積總和=> 不會為 dataframe 的每一行保留“實時”記錄
歡迎任何形式的幫助! 謝謝 !
df.groupby('label')['qty'].transform('cumsum')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.