Python 日期时间差和数据帧过滤

Python 日期时间差和数据帧过滤,python,pandas,Python,Pandas,我有如下结构的熊猫数据帧df,开始和结束时间是字符串值 Start Time End Time 0 2007-07-24 22:00:00 2007-07-25 07:16:53 1 2007-07-25 07:16:55 2007-07-25 08:52:19 2 2007-07-25 09:45:53 2007-07-25 10:30:00 3 2007-07-25 12:32:00 2007-

我有如下结构的熊猫数据帧df,开始和结束时间是字符串值

           Start Time            End Time
0    2007-07-24 22:00:00    2007-07-25 07:16:53 
1    2007-07-25 07:16:55    2007-07-25 08:52:19 
2    2007-07-25 09:45:53    2007-07-25 10:30:00 
3    2007-07-25 12:32:00    2007-07-25 14:13:38 
4    2007-07-25 22:59:00    2007-07-26 13:43:00
1-如何找出结束时间和开始时间之间的小时和分钟差异
2-查询数据帧以筛选时间小于1小时30分钟的所有行

3-筛选时间差在20分钟和40分钟之间的所有行
问题1
使用
pd.to_datetime
,然后减去列

for c in df.columns:
    df[c] = pd.to_datetime(df[c])

(df['End Time'] - df['Start Time']).dt.total_seconds() / 3600

0     9.281389
1     1.590000
2     0.735278
3     1.693889
4    14.733333
dtype: float64
问题2
只需使用遮罩和过滤器:

v = (df['End Time'] - df['Start Time']).dt.total_seconds() / 3600
df[v < 1.5]

           Start Time            End Time
2 2007-07-25 09:45:53 2007-07-25 10:30:00
df[(1/3 <= v) & (v <= 2/3)]
问题3
再次使用遮罩和过滤器:

v = (df['End Time'] - df['Start Time']).dt.total_seconds() / 3600
df[v < 1.5]

           Start Time            End Time
2 2007-07-25 09:45:53 2007-07-25 10:30:00
df[(1/3 <= v) & (v <= 2/3)]

df[(1/3问题1只返回小时,除此之外我还需要分钟。我们可以使用小时和分钟的属性来解决这个问题吗。@AsifKhan抱歉,我的错误。不要使用整数除法(Idk为什么我一直这么做)。请参见我的edit.float division返回的数字,如1.693889,整数部分肯定是小时,我们是否进一步处理小数部分以进一步提取分钟数?我们是否可以使用datatime对象属性解决此问题,例如,两个datetime对象之间的差异也是一个datetime对象,我们是否可以提取其小时数和分钟数属性om datetime object?@COLDSPEED您的答案解决了我的问题,我想更新您的答案,但系统不允许我更新,因为声誉不足15。@如果您勾选我答案旁边的灰色复选标记将其变为绿色,您仍然可以接受它。