我有以下结构的熊猫数据帧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分钟之间的行
答案 0 :(得分:1)
问题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[v >= 1.5]
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
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
问题3
再次,使用掩码和过滤器:
df[(1/3 <= v) & (v <= 2/3)]