从给定日期开始切片 Pandas 日期时间

Slicing Pandas datetime starting from a given date

我想混合两个不同的数据集。一个以日期时间作为索引,另一个以日期时间作为列。在第一个数据集中,给定一个begin_date,在第一个数据集中, 我想从 begin_date 开始分割 5 天,然后合并两个数据集。

     date     Mean
0  2017-05-01  10
1  2017-05-02  30
2  2017-05-03  40
3  2017-05-04  50
4  2017-05-05  60
5  2017-05-06  70
6  2017-05-07  51
7  2017-05-08  66
8  2017-05-09  23


                vol1    vol2
2017-05-01  31.983047  31.985035
2017-05-02  31.158368  31.158368
2017-05-03  30.414481  30.414481
2017-05-04  29.680437  29.680680
2017-05-05  29.277345  29.277099

我最喜欢的 begin_date = 2017-05-01 是:

    date       mean        vol1    vol2
0 2017-05-01    10     31.983047  31.985035
1 2017-05-02    30     31.158368  31.158368
2 2017-05-03    40     30.414481  30.414481
3 2017-05-04    50     29.680437  29.680680
4 2017-05-05    60     29.277345  29.277099

我试过了:

begin_date = '2017-05-01'
finish_date = parse(begin_date)+pd.Timedelta('5 days')
end_date = str(datetime.strftime(finish_date, '%Y-%m-%d'))
df['date'].loc[begin_date:end_date]

但它没有正确提取那个时期。

所以这里有几件事要记住:

  1. 将所有日期转换为 pandas 日期时间(与 begin_date 相同)
  2. 如果要按日期对 df 进行切片,请将其设置为索引。

所以稍微改变一下你的代码:

begin_date = pd.to_datetime('2017-05-01')

(df1.set_index('date')[begin_date: begin_date + pd.Timedelta("5 days")]
 .join(df2))

如果你想从新 df 中的索引中删除日期,只需在最后使用 .reset_index。

希望对您有所帮助!