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')
给予