查询pandas中的timedelta列,过滤行

Posted

技术标签:

【中文标题】查询pandas中的timedelta列,过滤行【英文标题】:Querying timedelta column in pandas, and filtering rows 【发布时间】:2018-06-30 18:30:26 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您可以通过total_secondstimedeltas 转换为秒并与标量进行比较:

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

或与Timedelta比较:

df = df[df['col'] < pd.Timedelta(30, unit='s')]

示例

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中的timedelta列,过滤行的主要内容,如果未能解决你的问题,请参考以下文章

pandas使用dataframe中的两列时间对象数据列作差生成时间差数据列筛选dataframe数据中时间差大于指定阈值的数据行(时间差timedelta大于指定阈值的样本数据)

pandas使用dataframe中的两列时间对象数据列作差生成时间差数据列(timedelta column)

pandas使用dataframe中的两列时间对象数据列作差生成时间差数据列将时间差(timedelta对象)与特定时间长度进行比较

pandas使用dataframe中的两列时间对象数据列作差生成时间差数据列指定时间数据列相加timedelta数据列实现数据偏移(向前偏移时间增加)

pandas使用dataframe中的两列时间对象数据列作差生成时间差数据列指定时间数据列减去timedelta数据列实现数据偏移(向后偏移时间减小)

pandas使用dataframe中的两列时间对象数据列作差生成时间差数据列使用sort_values函数对timedelta对象(时间差数据列)进行排序