我的df看起来像这样。
date pre_date time_delta
0 2019-05-13 10:45:57 2019-05-13 10:45:57 00:00:00
1 2019-05-13 14:22:22 2019-05-13 10:45:57 03:36:25
2 2019-05-13 14:32:22 2019-05-13 14:22:22 00:10:00
3 2019-05-14 03:58:27 2019-05-13 14:32:22 13:26:05
4 2019-05-14 04:08:27 2019-05-14 03:58:27 00:10:00
5 2019-05-14 04:28:27 2019-05-14 04:08:27 00:20:00
我的目标是通过“ time_delta”列的值尽可能有效地对其进行过滤。
sec = 500
df = df[(d_df['time_delta']>(pd.Timedelta(sec, unit='s'))) | ((df['time_delta']==pd.Timedelta(0, unit='s')))]
它的效果比for循环更好,但仍然很慢。 有什么建议吗?
答案 0 :(得分:1)
如果“ time_delta”是timedelta
类型的列,则可以将总秒数提取为整数(或浮点数)并进行比较:
delta = df['time_delta'].dt.total_seconds()
df[(delta == 0) | (delta > sec)]
答案 1 :(得分:0)
这对您有用吗?
mask = (df['Time_delta'].dt
.seconds
.between(0,sec,
inclusive=False)
)
df = df[mask]