pandas datetimeindex between_time函数(如何获取not_between_time)

时间:2014-03-09 21:47:56

标签: python numpy pandas

我有一个pandas df,我使用between_time a和b来清理数据。我如何能 获得non_between_time行为?

我知道我可以尝试类似的东西。

df.between_time['00:00:00', a]   
df.between_time[b,23:59:59']

然后将它组合并对新df进行排序。这是非常低效的,它不适合我,因为我有23:59:59和00:00:00之间的数据

由于

1 个答案:

答案 0 :(得分:2)

您可以找到时间介于ab之间的行的索引位置,然后使用df.index.diff从索引中删除这些内容:

import pandas as pd
import io
text = '''\
date,time, val
20120105, 080000,   1
20120105, 080030,   2
20120105, 080100,   3
20120105, 080130,   4
20120105, 080200,   5
20120105, 235959.01, 6
'''

df = pd.read_csv(io.BytesIO(text), parse_dates=[[0, 1]], index_col=0)
index = df.index
ivals = index.indexer_between_time('8:01:30','8:02')
print(df.reindex(index.diff(index[ivals])))

产量

                             val
date_time                       
2012-01-05 08:00:00            1
2012-01-05 08:00:30            2
2012-01-05 08:01:00            3
2012-01-05 23:59:59.010000     6