Python 如何使用Pandas复制与列表中的日期值匹配的日期时间行

Python 如何使用Pandas复制与列表中的日期值匹配的日期时间行,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我的df数据集如下所示: time Open 2017-01-03 07:00:00 5.2475 2017-01-04 08:00:00 5.2180 2017-01-05 09:00:00 5.2128 2017-01-02 07:00:00 5.4122 2017-01-03 08:00:00 5.2123 2017-01-04 09:00:00 5.2475 2017-01-01 07:00:00

我的
df
数据集如下所示:

time                    Open
2017-01-03 07:00:00     5.2475
2017-01-04 08:00:00     5.2180
2017-01-05 09:00:00     5.2128
2017-01-02 07:00:00     5.4122
2017-01-03 08:00:00     5.2123
2017-01-04 09:00:00     5.2475
2017-01-01 07:00:00     5.2180
2017-01-02 08:00:00     5.2128
2017-01-03 09:00:00     5.4122
....
我有一个日期列表,如下所示:

# date_list could be of any size
date_list =['2017-01-05', '2017-01-03', '2017-01-12']
time                    Open
2017-01-05 07:00:00     5.2475
2017-01-06 08:00:00     5.2180
2017-01-03 07:00:00     5.4122
2017-01-04 08:00:00     5.2123
2017-01-12 07:00:00     5.2180
2017-01-13 08:00:00     5.2128
我想做的是从
'07:00:00'
时间开始,复制
下一个
2
值,该值与
日期列表匹配,包括
第一个
值到下一个
2

基本上,它必须从
日期列表
日期
复制下一个
2
值,时间从
'07:00:00'

我的新
df
将如下所示:

# date_list could be of any size
date_list =['2017-01-05', '2017-01-03', '2017-01-12']
time                    Open
2017-01-05 07:00:00     5.2475
2017-01-06 08:00:00     5.2180
2017-01-03 07:00:00     5.4122
2017-01-04 08:00:00     5.2123
2017-01-12 07:00:00     5.2180
2017-01-13 08:00:00     5.2128
这里,我们根据
日期列表
订购新的
df
,该列表是原始
df
子集
,只有
日期列表中的

我做了什么?

我使用
df.index.isin(date\u list)
查找日期,但我原来的
df
time
值。我也不知道如何获得下一个
2

你能帮我吗?

只要你的索引是DatetimeIndex,你就可以与结合使用

import pandas as pd

# dummy data
date_range = pd.date_range('2017-01-03 07:00:00', '2019-01-31', freq='60T')
df = pd.DataFrame(
    np.random.randint(1, 20, (date_range.shape[0], 1)),
    index=date_range, columns=['Open'])

date_list =['2017-01-05', '2017-01-03', '2017-01-12']

df[df.index.to_series().dt.date.astype(str).isin(date_list)].between_time('07:00', '08:00')
给予

只要索引是DatetimeIndex,就可以与组合

import pandas as pd

# dummy data
date_range = pd.date_range('2017-01-03 07:00:00', '2019-01-31', freq='60T')
df = pd.DataFrame(
    np.random.randint(1, 20, (date_range.shape[0], 1)),
    index=date_range, columns=['Open'])

date_list =['2017-01-05', '2017-01-03', '2017-01-12']

df[df.index.to_series().dt.date.astype(str).isin(date_list)].between_time('07:00', '08:00')
给予