从给定日期开始切片 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]
但它没有正确提取那个时期。
所以这里有几件事要记住:
- 将所有日期转换为 pandas 日期时间(与 begin_date 相同)
- 如果要按日期对 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。
希望对您有所帮助!
我想混合两个不同的数据集。一个以日期时间作为索引,另一个以日期时间作为列。在第一个数据集中,给定一个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]
但它没有正确提取那个时期。
所以这里有几件事要记住:
- 将所有日期转换为 pandas 日期时间(与 begin_date 相同)
- 如果要按日期对 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。
希望对您有所帮助!