簡體   English   中英

"如何獲得落在 Pandas df 滑動窗口內的日期列表的總和和重疊?"

[英]How do I get both the sum and an overlapping a list of dates that fall within a sliding window in a Pandas df?

我有一個這樣的df:

日期<\/th> 名稱<\/th> 數量<\/th><\/tr><\/thead>
2021-07-01<\/td> '氯氧'<\/td> 1<\/td><\/tr>
2021-07-14<\/td> '氯氧'<\/td> 20<\/td><\/tr>
2021-07-29<\/td> '氯氧'<\/td> 700<\/td><\/tr>
2021-08-11<\/td> '氯氧'<\/td> 6000<\/td><\/tr>
2021-08-12<\/td> '蘇里南'<\/td> 3<\/td><\/tr>
2021-08-19<\/td> '蘇里南'<\/td> 10<\/td><\/tr><\/tbody><\/table>

我想要一個月內的金額總和,加上該月范圍內的所有日期。 所以像這些結果:

名稱<\/th> <\/th> 日期<\/th><\/tr><\/thead>
'氯氧'<\/td> 721<\/td> ['2021-07-01', '2021-07-14', '2021-07-29']<\/td><\/tr>
'氯氧'<\/td> 6720<\/td> '2021-07-14'、'2021-07-29'、'2021-08-11'<\/td><\/tr>
'蘇里南'<\/td> 13<\/td> ['2021-08-12', '2021-08-19']<\/td><\/tr><\/tbody><\/table>

我一直在修改 rolling() 和 groupby,但我一直在苦苦掙扎,無法獲得重疊的日期!

"

使用pd.to_datetime<\/code><\/a> , Series.dt.to_period<\/code><\/a>和Groupby.agg<\/code><\/a> :

In [874]: df['date'] = pd.to_datetime(df['date']) # Convert date column to pandas datetime

In [923]: res = df.groupby(['name', df['date'].dt.to_period('M')], as_index=False).agg({'amount': sum, 'date': lambda x: list(x.dt.date)})

In [924]: res
Out[924]: 
         name  amount                                  date
0   'Chlorox'     721  [2021-07-01, 2021-07-14, 2021-07-29]
1   'Chlorox'    6000                          [2021-08-11]
2  'Suriname'      13              [2021-08-12, 2021-08-19]

我認為目標是根據month<\/code>和name<\/code>按列分組。 所以結果數據框將如下所示 -

date  amount
name     Month                                            
Chlorox  7      2021-07-01, 2021-07-14, 2021-07-29     721
         8                              2021-08-11    6000
Suriname 8                  2021-08-12, 2021-08-19      13

暫無
暫無

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

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