簡體   English   中英

對 pandas dataframe 中的某些行組求和

[英]Sum certain groups of rows in pandas dataframe

我有一個 pandas dataframe ,我想在其中對某些不規則間隔日期之間的值求和。 例如,我有這樣的事情:

日期 小部件
2021-03-01 1
2021-03-02 0
2021-03-03 1
2021-03-04 3
2021-03-05 1
2021-03-06 2

而且我知道總和的截止日期是 2021-03-01, 2021-03-04, 2021-03-05 所以我想要截止日期和截止日期(但不包括)產生的所有小部件的總和下一個截止日期。 所有不是截止日期的日期都將具有值 0。

這將產生一個如下所示的新列。

日期 小部件 總和
2021-03-01 1 2
2021-03-02 0 0
2021-03-03 1 0
2021-03-04 3 3
2021-03-05 1 3
2021-03-06 2 0

如何在 pandas 中執行此操作?

您可以嘗試:

df['date'] = pd.to_datetime(df['date']) #convert to datetime

然后檢查是否出現截斷和 cumsum 並將它們用作 grouper 列:

cutoffs= ['2021-03-01', '2021-03-04', '2021-03-05']
cond = df['date'].isin(pd.to_datetime(cutoffs))
df['sums'] = df.groupby(cond.cumsum())['widgets'].transform('sum').where(cond,0)

print(df)

        date  widgets    sums
0 2021-03-01        1       2
1 2021-03-02        0       0
2 2021-03-03        1       0
3 2021-03-04        3       3
4 2021-03-05        1       3
5 2021-03-06        2       0

暫無
暫無

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

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