如何删除最后TP == 1一个具有 48 小时缓冲区的数据?
例如ID = A9,最后一个TP == 1是 on 2020-05-06 13:00。我想保留该组 ID 的所有数据,直到2020-05-06 13:00最后TP == 1加上接下来的 2 天?
+---++--------+----------------+
| id| TP| Date|
+---+---------+----------------+
| A1| Null|2010-01-01 12:00|
| A1| Null|2010-01-01 13:00|
| A1| 1|2010-01-02 01:00|
| A1| Null|2010-01-02 02:00|
| A9| Null|2010-05-05 12:00|
| A9| 1|2010-05-05 13:00|
| A9| 1|2010-05-06 13:00|
| A9| Null|2010-05-09 13:00|
+---+---------+----------------+
所需的数据框
+---++--------+----------------+
| id| TP| Date|
+---+---------+----------------+
| A1| Null|2010-01-01 12:00|
| A1| Null|2010-01-01 13:00|
| A1| 1|2010-01-02 01:00|
| A1| Null|2010-01-02 02:00|
| A9| Null|2010-05-05 12:00|
| A9| 1|2010-05-05 13:00|
| A9| 1|2010-05-06 13:00|
+---+---------+----------------+
这就是我在 Pandas 中所做的,但对于 15M+ 的观察结果效率不高
main_pd = main.toPandas()
bigdf = pd.DataFrame()
for i in main_pd.ID.unique():
df = main_pd[main_pd.ID == i]
TPdate = df[df.TP == 1]['Date'].max()+pd.Timedelta('3 days 0 hours')
df = df[(df.Date <= TPdate)]
bigdf = bigdf.append(df)
月关宝盒
阿晨1998
相关分类