从pandas dataframe中删除两个时间戳之间的所有行

时间:2017-06-01 19:27:24

标签: python python-3.x pandas dataframe datetime64

如何从两个时间戳包含之间的数据框中删除所有行?

我的Dataframe看起来像:

                   b      a      
0 2016-12-02 22:00:00  19.218519 
1 2016-12-02 23:00:00  19.171197  
2 2016-12-03 00:00:00  19.257836  
3 2016-12-03 01:00:00  19.195610  
4 2016-12-03 02:00:00  19.176413 

例如:我想删除时间戳落在上面的数据帧中的所有行:" 2016-12-02 22:00:00"到" 2016-12-03 00:00:00"。 因此,结果将只包含第3行和第4行。

b列的类型是datetime64,a的类型是float。

请建议。

3 个答案:

答案 0 :(得分:2)

你可以过滤掉那些:

from_ts = '2016-12-02 22:00:00'
to_ts = '2016-12-03 00:00:00'
df = df[(df['b'] < from_ts) | (df['b'] > to_ts)]

答案 1 :(得分:0)

将列b转换为datetime,然后应用蒙版

df.b = pd.to_datetime(df.b, format = '%Y-%m-%d %H:%M:%S')
df[(df.b < '2016-12-02 22:00:00') | (df.b > '2016-12-03 00:00:00')]

    b                   a
3   2016-12-03 01:00:00 19.195610
4   2016-12-03 02:00:00 19.176413

答案 2 :(得分:0)

index_list= df.b[(df.b >= "2016-12-02 22:00:00") & (df.b <= "2016-12-03 00:00:00")].index.tolist()
df.drop(df.index[index_list] , inplace = True)