1

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

我的数据框看起来像:

                   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。

请建议。

4

3 回答 3

5

您可以过滤掉那些:

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)]
于 2017-06-01T19:43:33.330 回答
1

将 b 列转换为日期时间,然后应用掩码

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
于 2017-06-01T19:54:15.363 回答
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)
于 2017-06-01T20:24:18.413 回答