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

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

基于兩個分類列的累積計數

基于兩個分類列的累積計數

30秒到達戰場 2021-11-09 10:36:23
對于表中的每條記錄,我想做一個基于兩個分類列的累積計數。在下表中,我想獲取cum_count列,它是根據列industry和deal_status計算的。這個想法是,對于每條記錄,計算同一行業以前贏得的交易數量。例如,表的最后一個記錄有cum_count = 3,因為只有3涉及deal_status =贏得了業界= X之前已經見過。該大熊貓GroupBy.cumcount功能的確,對于一個變量...對于我描述的案例,我如何才能做到這一點?pd.DataFrame({'time': [1, 2, 3, 4, 5, 6, 7],              'company' : ["ciaA", "ciaB", "ciaA", "ciaC", "ciaA", "ciaD", "ciaE"],              'industry' : ["x", "y", "x", "x", "x", "y", "x"],              'deal_status' : ["won", "lost", "won", "won", "lost", "won", "lost"],              'cum_count' : [0, 0, 1, 2, 3, 0, 3]})time    company    industry     deal_status     cum_count 1       ciaA         x             won             0 2       ciaB         y            lost             0 3       ciaA         x             won             1 4       ciaC         x             won             2 5       ciaA         x            lost             3 6       ciaD         y             won             0 7       ciaE         x            lost             3
查看完整描述

1 回答

?
縹緲止盈

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

創建一個輔助列,您將對其進行累計總和。需要在每個組內移動,因為您的計數僅包括之前的獲勝值:


df['to_sum'] = (df.deal_status == 'won').astype(int)

df['cum_count'] = (df.groupby('industry')

                    .apply(lambda x: x.to_sum.shift(1).cumsum()).fillna(0)

                    .reset_index(0, drop=True))

輸出df:

   time company industry deal_status  to_sum  cum_count

0     1    ciaA        x         won       1        0.0

1     2    ciaB        y        lost       0        0.0

2     3    ciaA        x         won       1        1.0

3     4    ciaC        x         won       1        2.0

4     5    ciaA        x        lost       0        3.0

5     6    ciaD        y         won       1        0.0

6     7    ciaE        x        lost       0        3.0


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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