在 Pandas 中查询 timedelta 列,并过滤行

use*_*055 8 filtering timedelta pandas

我在熊猫中有一个 timedelta 列。它的格式为 x 天 00:00:00。我想过滤掉并标记值 >=30 分钟的行。我不知道如何使用熊猫来做到这一点。我尝试了布尔值和 if 语句,但没有用。任何帮助,将不胜感激。

jez*_*ael 11

您可以将timedeltas转换为秒total_seconds并与标量进行比较:

df = df[df['col'].dt.total_seconds() < 30]
Run Code Online (Sandbox Code Playgroud)

或与Timedelta

df = df[df['col'] < pd.Timedelta(30, unit='s')]
Run Code Online (Sandbox Code Playgroud)

样品

df = pd.DataFrame({'col':pd.to_timedelta(['25:10:01','00:01:20','00:00:20'])})
print (df)
              col
0 1 days 01:10:01
1 0 days 00:01:20
2 0 days 00:00:20

df = df[df['col'].dt.total_seconds() < 30]
print (df)
       col
2 00:00:20
Run Code Online (Sandbox Code Playgroud)