簡體   English   中英

Pandas DataFrame 上的條件分組迭代

[英]Conditional grouped iteration over a Pandas DataFrame

我有以下 DataFrame:

用戶 event_id event_creation 事件_b 美元
一個 1 2021/07/01 10
一個 2 2021/07/02 2021/07/17 10
一個 3 2021/07/22 2021/08/02 10
一個 4 2021/07/24 2021/08/02 10
一個 5 2021/07/24 2021/08/06 10
一個 6 2021/08/16 2021/01/29 10
b 7 2021/08/18 2021/10/14 10

我想根據條件聚合 sum_cum 創建一個新列。
按用戶分組,遍歷 event_ids,
對於每個 event_id,查看所有以前的事件並將 event_b 日期小於當前事件創建日期的所有事件的美元金額相加。
所以我會得到以下DataFrame:

用戶 event_id event_creation 事件_b 美元 sum_cum
一個 1 2021/07/01 10 0
一個 2 2021/07/02 2021/07/17 10 0
一個 3 2021/07/22 2021/08/02 10 10
一個 4 2021/07/24 2021/08/02 10 10
一個 5 2021/07/24 2021/08/06 10 10
一個 6 2021/08/16 2021/01/29 10 40
b 7 2021/08/18 2021/10/14 10 0

我試圖創建循環但沒有任何結果,我希望解釋清楚,謝謝你的幫助:)

嘗試這個:

df.apply(
    lambda x: df[
        (df.event_b < x.event_creation) &
        (df.event_id < x.event_id) &
        (df.user == x.user)
    ].USD.sum(),
    axis=1)

您也可以使用groupby代替df.user == x.user

如果您有一個非常大的數據集,它可能會變得很慢,因為您正在為每一行切片 df。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM