亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據另一列重置累計總和

根據另一列重置累計總和

胡子哥哥 2023-05-09 15:04:12
有許多與條件累積和相關的查詢和答案(Cumsum Reset based on a condition in Pandas,Reset Cumulative sum based on condition Pandas,Cumsum Reset based on a condition in Pandas)。但我無法解決我面臨的問題。以下是我擁有的部分數據,要求是記錄“類型”的變化和相應的累計總和。  type sale    y   10       y   20       y    5       n   30       n   20       n    5       y   10       y   40       y   15   我的要求是獲得類型變化和累計銷售額的連續計數,如下所示。   type sale tp_cum cum_sale    y   10    1      10    y   20    1      30    y    5    1      35    n   30    2      30    n   20    2      50     n    5    2      55    y   10    3      10    y   40    3      50    y   15    3      65我嘗試對下面的代碼進行各種修改,但并不完全符合要求。請幫忙。sales['cum_sale'] = stock.groupby('type')['sale'].cumsum()數據框:df = pd.DataFrame([["y",10 ], ["y",20  ],["y",5  ],["n",30   ],["n",20   ],["n",5 ],["y",10  ], ["y",40  ],["y",15 ]],columns = ["type","sale"])
查看完整描述

1 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

這是一個選項,您首先創建tp_cum列,然后cumsum()


import pandas as pd

import numpy as np


df = pd.DataFrame([["y",10 ], 

["y",20  ],

["y",5  ],

["n",30   ],

["n",20   ],

["n",5 ],

["y",10  ], 

["y",40  ],

["y",15 ]],columns = ["type","sale"])


df["type2"] = np.cumsum((df["type"] != df["type"].shift(1)))

df["cum_sale"] = df[["sale","type2"]].groupby("type2").cumsum()

df

輸出:


    type    sale    type2  cum_sale

0   y       10      1      10

1   y       20      1      30

2   y       5       1      35

3   n       30      2      30

4   n       20      2      50

5   n       5       2      55

6   y       10      3      10

7   y       40      3      50

8   y       15      3      65


查看完整回答
反對 回復 2023-05-09
  • 1 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號