我试图从一个包含时间差值的数据框中删除时间差小于某个特定秒数的行。
我的数据框类似下面这样:
Start Elapsed time
0 2018-10-29 07:56:20 0 days 00:15:05
1 2018-10-29 07:56:20 0 days 00:15:05
2 2018-10-29 08:11:25 0 days 00:00:02
3 2018-10-29 08:11:27 0 days 00:00:08
4 2018-10-29 08:11:27 0 days 00:00:08
5 2018-10-29 08:11:35 0 days 00:00:02
6 2018-10-29 08:11:37 0 days 00:00:00
我希望删除所有经过时间小于某个秒数(比如说3秒)的行,因此我希望得到一个像上面那样的数据框:
Start Elapsed time
0 2018-10-29 07:56:20 0 days 00:15:05
1 2018-10-29 07:56:20 0 days 00:15:05
3 2018-10-29 08:11:27 0 days 00:00:08
4 2018-10-29 08:11:27 0 days 00:00:08
我尝试了很多不同的方法,但出现了许多不同的错误信息,通常是不兼容类型比较错误。例如:
df_new = df[df['Elapsed time'] > pd.to_timedelta('3 seconds')]
df_new = df[df['Elapsed time'] > datetime.timedelta(seconds=3)]
我希望避免迭代所有行,但如果必须这样做,我会这样做。
非常感谢您的帮助!
编辑:我的真正问题是,“经过的时间”列的dtype是对象而不是timedelta。 一个快速的解决方法是使用下面的代码进行类型转换,但更好的解决方法是确保在第一次设置dtype时不将其设置为对象类型。谢谢大家的帮助和评论。
df_new = df[pd.to_timedelta(df['Elapsed time']) > pd.to_timedelta('3 seconds')]
df.dtypes
有什么内容? - jppdatetime_end - datetime_start
。而我从第一个解决方案中得到的错误是无法将类型 'Timedelta' 与类型 'str' 进行比较
。这真是令人沮丧,但感谢您指出这一点! - ang mcg