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

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

如何從另一個類別執行滾動求和

如何從另一個類別執行滾動求和

料青山看我應如是 2022-07-05 19:28:41
我正在嘗試執行一些計算來檢索另一個類別的兩次出現之間的類別的滾動總數。我意識到用語言來描述并不容易。因此,這是輸入數據幀和預期輸出的示例輸入:Date       Category  Value2012-01-04        A     102012-01-06        A     202012-02-15        B    -102012-04-29        A      52012-04-30        A     702012-10-15        A     152012-10-16        B    -302012-11-19        B    -50預期輸出:僅 B 行,但提及自上次出現 B 以來 A 的滾動總數Date       Category  Value  Total_A_since_previous_B2012-02-15        B    -10                        302012-10-16        B    -30                        902012-11-19        B    -50                         0我已經嘗試了幾件事但沒有成功。你能幫我理解怎么做嗎?
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

首先為 B 的每次出現創建組,對值求和,然后將其作為新列分配給過濾后的 df。


(

    pd.Series(np.where(df.Category.eq('B'), df.index, np.nan)).bfill()

    .pipe(lambda x: df.groupby(x).Value.apply(lambda x: x[:-1].sum()))

    .pipe(lambda x: df[df.Category=='B'].assign(Total_A_since_previous_B=x))

)


    Date        Category    Value   Total_A_since_previous_B

2   2012-02-15  B           -10     30

6   2012-10-16  B           -30     90

7   2012-11-19  B           -50     0


查看完整回答
反對 回復 2022-07-05
?
HUH函數

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

使用GroupBy.agg:


blocks = df.Category.shift().eq('B').cumsum()

new_df = (df.groupby(blocks)

            .agg(Date= ('Date','last'),

                 Category = ('Category','last'),

                 Value = ('Value','last'),

                 Total_A_since_previous_B = ('Value','sum')

                )

             .assign(Total_A_since_previous_B = lambda x: x.Total_A_since_previous_B

                                                           .sub(x.Value))

             .reset_index(drop=True))


print(new_df)

         Date Category  Value  Total_A_since_previous_B

0  2012-02-15        B    -10                        30

1  2012-10-16        B    -30                        90

2  2012-11-19        B    -50                         0


查看完整回答
反對 回復 2022-07-05
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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