我有一個資料框,它為我提供了各種文章的每日數量水平。我想獲得一個資料框,它為我提供每篇文章每月最后一天的數量水平。
原始 df:
| 物品 | 日期 | 數量 |
|---|---|---|
| 蘋果 | 23/09/21 | 2143 |
| 蝙蝠 | 21/09/2021 | 2444 |
| 可樂 | 15/09/21 | 1512 |
| 蘋果 | 21/10/21 | 2906 |
| 蝙蝠 | 4/10/21 | 2730 |
| 可樂 | 16/10/21 | 2449 |
| 可樂 | 31/12/2021 | 0 |
| 蘋果 | 27/12/2021 | 1086 |
| 蝙蝠 | 25/12/2021 | 1186 |
| 蘋果 | 26/12/2021 | 1377 |
目標 df:
| 物品 | 日期 | 數量 |
|---|---|---|
| 可樂 | 31/12/2021 | 0 |
| 蘋果 | 27/12/2021 | 1086 |
| 蝙蝠 | 25/12/2021 | 1186 |
有什么辦法可以得到嗎?
我嘗試使用 tail() 按專案和日期分組,但沒有用。
uj5u.com熱心網友回復:
IIUC需要每幾年一次的數值通過Grouper用GroupBy.tail:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df = df.groupby(['item', pd.Grouper(freq='Y', key='Date')]).tail(1)
print (df)
item Date Quantity
6 cola 2021-12-31 0
8 bat 2021-12-25 1186
9 apple 2021-12-26 1377
因為每個月的輸出是不同的:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df = df.groupby(['item', pd.Grouper(freq='m', key='Date')]).tail(1)
print (df)
item Date Quantity
0 apple 2021-09-23 2143
1 bat 2021-09-21 2444
2 cola 2021-09-15 1512
3 apple 2021-10-21 2906
4 bat 2021-10-04 2730
5 cola 2021-10-16 2449
6 cola 2021-12-31 0
8 bat 2021-12-25 1186
9 apple 2021-12-26 1377
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/397684.html
