[英]Counting the number of rows that meet certain sum condition in 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.