第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

具有條件 cumsum 的自定義聚合

具有條件 cumsum 的自定義聚合

牛魔王的故事 2022-06-14 17:25:55
我有一個(gè)看起來像這樣的數(shù)據(jù)框根據(jù)用戶操作(可能有四種操作),我想在給定時(shí)間點(diǎn)累積用戶的金額。A 類和 B 類行為代表用戶收入,C 類和 D 類行為代表用戶支出。換句話說,我想要這樣的結(jié)果用戶 1 首先執(zhí)行 action_A 并得到 10 作為結(jié)果。然后 action_B 給我們 10 + 5 = 15。Action_C 代表金錢損失,給 use 15 - 5 = 10。最后,action_D 與 C 相同,我們得到 10 - 15 = -5。我怎樣才能用熊貓實(shí)現(xiàn)這個(gè)?我嘗試使用自定義聚合expanding().apply(agg_func)但沒有得到任何令人滿意的結(jié)果。編輯:數(shù)據(jù)框創(chuàng)建代碼ids = [1,1,1,1,2,2]dates = ['2019-03-07 13:54', '2019-03-07 16:07', '2019-03-10 19:20', '2019-03-10 19:20', '2016-03-07 14:47', '2016-03-09 11:07']amounts = [10., 5., 5., 15., 2., 4.]actions = ['action_A', 'action_B', 'action_C', 'action_D', 'action_A', 'action_B']result = [10, 15, 10, -5, 2, 6]pd.DataFrame({'user_id': ids, 'start_date': dates, 'amount': amounts, 'action': actions, 'result': result}, index=range(6))
查看完整描述

2 回答

?
慕俠2389804

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊

由和最后使用-1創(chuàng)建的掩碼的多個(gè)值:Series.isinSeries.maskGroupBy.cumsum


df['result'] = (df['amount'].mask(df['action'].isin(['action_C','action_D']),

                                  df['amount'] * -1)

                           .groupby(df['user'])

                           .cumsum())

print (df['result'])

0    10.0

1    15.0

2    10.0

3    -5.0

4     2.0

5     6.0

Name: result, dtype: float64

與幫助列類似的解決方案:


df['result'] = (df.assign(tmp = df['amount'].mask(df['action'].isin(['action_C','action_D']),

                                 df['amount']*-1))

                  .groupby('user')['tmp']

                  .cumsum())


查看完整回答
反對 回復(fù) 2022-06-14
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

嘿希望這會給你一個(gè)提示:

首先,我對代表費(fèi)用的行動給出否定符號。

df.loc[df.action.isin(['action_C','action_D'])].amount = -1 * df.loc[df.action.isin(['action_C','action_D'])].amount

然后你像這樣創(chuàng)建結(jié)果列

df['result'] = df.amount.cumsum()


查看完整回答
反對 回復(fù) 2022-06-14
  • 2 回答
  • 0 關(guān)注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號