簡體   English   中英

熊貓時間序列:刪除每個ID的行

[英]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/282019/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.

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