如何筛选DataFrame列中的负时间差数据?
解决方案
你可以直接利用布尔索引筛选出负时间差的行,因为pandas的Timedelta类型支持直接与数值进行比较操作。
具体代码
import pandas as pd # 针对你已生成的时间差DataFrame(列名为0) negative_timedeltas = df[df[0] < pd.Timedelta(0)]
或者更简洁的写法,pandas会自动将整数0转换为Timedelta类型:
negative_timedeltas = df[df[0] < 0]
验证结果
运行上述代码后,你会得到仅包含负时间差的DataFrame:
0 3 -42 days 06:50:00
合并计算与筛选的写法
如果想一步完成计算、去空值和筛选,可以写成:
negative_df = (df['date1'] - df['date2']).dropna().to_frame()[lambda x: x[0] < 0]
内容的提问来源于stack exchange,提问作者Deidraak
相关产品推荐
相关产品推荐

