[英]Pandas Time Series: Remove Rows Per ID
我有以下形式的Pandas數據框:
Date ID Temp
2019/03/27 1 23
2019/04/27 2 32
2019/04/27 1 42
2019/04/28 1 41
2019/01/27 2 33
2019/08/27 2 23
我需要做什么?
為每個ID選擇距其最近的度量值至少30天的行。
即Id = 2
的最新日期是2019/08/27
,所以對於ID =2
我需要選擇至少30天的行。 因此,將2019/08/27
ID為2且具有2019/08/27
的行。
同樣,ID = 1的最新日期是2019/04/28
。 這意味着僅當日期小於2019/03/28
( 2019/03/28
30天)時,我才能選擇ID =1
行。 因此,將刪除ID=1
的行2019/04/27
。
如何在熊貓中做到這一點。 任何幫助是極大的贊賞。
謝謝。
最終數據幀將是:
Date ID Temp
2019/03/27 1 23
2019/04/27 2 32
2019/01/27 2 33
在您的情況下,使用groupby
+ transform('last')
並過濾原始df
Yourdf=df[df.Date<df.groupby('ID').Date.transform('last')-pd.Timedelta('30 days')].copy()
Date ID Temp
0 2019-03-27 1 23
1 2019-04-27 2 32
4 2019-01-27 2 33
注意,我將在.copy
添加.copy
以防止設置復制錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.