我有一個像這樣的資料框:
item_id facility_id timestamp min_inv current_inv demand
0 12 1185 2022-01-11 00:00:00 2.0 3.0 1
1 12 1185 2022-01-11 01:00:00 2.0 3.0 1
2 12 1185 2022-01-11 02:00:00 2.0 3.0 2
3 12 1185 2022-01-11 03:00:00 2.0 3.0 2
4 12 1185 2022-01-11 04:00:00 2.0 3.0 1
5 23 1185 2022-01-11 00:00:00 2.0 3.0 1
6 23 1185 2022-01-11 01:00:00 2.0 3.0 2
7 23 1185 2022-01-11 02:00:00 2.0 3.0 1
8 23 1185 2022-01-11 03:00:00 2.0 3.0 2
9 23 1185 2022-01-11 04:00:00 2.0 3.0 1
10 34 1185 2022-01-11 00:00:00 2.0 3.0 1
11 34 1185 2022-01-11 01:00:00 2.0 3.0 1
12 34 1185 2022-01-11 02:00:00 2.0 3.0 4
13 34 1185 2022-01-11 03:00:00 2.0 3.0 2
14 34 1185 2022-01-11 04:00:00 2.0 3.0 2
15 45 1185 2022-01-11 00:00:00 2.0 3.0 3
16 45 1185 2022-01-11 01:00:00 2.0 3.0 2
17 45 1185 2022-01-11 02:00:00 2.0 3.0 3
18 45 1185 2022-01-11 03:00:00 2.0 3.0 1
19 45 1185 2022-01-11 04:00:00 2.0 3.0 3
我想分組item_id并每 2 小時重新采樣一次。在重新采樣中,我想對不同的列使用不同的 aggfunc。
我這樣做的方式是:
tmp = input_df.groupby('item_id')
new_df = pd.DataFrame()
for group, df in tmp:
tmp_df = df.set_index('timestamp').resample('2H').agg({'current_inv':'last',
'min_inv':'last',
'demand':'sum'})
tmp_df['item_id'] = group
new_df = pd.concat([new_df, tmp_df])
new_df給出輸出。
有沒有更多的pythonic方式來做到這一點?我不想使用for回圈。
uj5u.com熱心網友回復:
IIUC,您可以將on='timestamp'其用作方法的引數,resample以矢量化方式獲得您的預期結果:
out = df.groupby('item_id').resample('2H', on='timestamp') \
.agg({'current_inv': 'last', 'min_inv':'last', 'demand':'sum'}).reset_index()
print(out)
# Output
item_id timestamp current_inv min_inv demand
0 12 2022-01-11 00:00:00 3.0 2.0 2
1 12 2022-01-11 02:00:00 3.0 2.0 4
2 12 2022-01-11 04:00:00 3.0 2.0 1
3 23 2022-01-11 00:00:00 3.0 2.0 3
4 23 2022-01-11 02:00:00 3.0 2.0 3
5 23 2022-01-11 04:00:00 3.0 2.0 1
6 34 2022-01-11 00:00:00 3.0 2.0 2
7 34 2022-01-11 02:00:00 3.0 2.0 6
8 34 2022-01-11 04:00:00 3.0 2.0 2
9 45 2022-01-11 00:00:00 3.0 2.0 5
10 45 2022-01-11 02:00:00 3.0 2.0 4
11 45 2022-01-11 04:00:00 3.0 2.0 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/436865.html
標籤:Python 熊猫 约会时间 熊猫-groupby 熊猫重采样
上一篇:如何計算熊貓的自定義會計年度?
