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

标签 pandas filtering timedelta

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

最佳答案

您可以转换 timedelta s 到秒 total_seconds 并与标量进行比较:

df = df[df['col'].dt.total_seconds() < 30]

或者比较Timedelta :
df = df[df['col'] < pd.Timedelta(30, unit='s')]

sample :
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

关于pandas - 在 Pandas 中查询 timedelta 列,并过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48376278/

相关文章:

python - Pandas - Drop 函数错误(标签不包含在轴中)

python - 有没有办法将 timedelta 对象格式化为小时-分钟-秒.MILLISECONDS?

filtering - 尝试过滤来自加速度计和陀螺仪的(大量)噪声

asp.net-mvc-3 - KendoUI 网格过滤器不起作用

list - 如何用惯用的方式编写这个函数?

python - Pandas 滚动时间总和

go - golang中的python timedelta之类的东西

python - 有没有办法将 `apply` 函数应用于数据帧的一列,同时保持其他列固定?

python - 数据包含特定格式的错误读数

python - 如何使用 Python/Pandas 将数据框的其他行合并到当前行