日期时差和数据帧过滤

时间:2017-11-20 05:45:30

标签: 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-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 个答案:

答案 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)]