python - Python:返回缺少的工作日日期并在缺少的日期旁边分配费率
问题描述
Dates rates
7/26/2019 1.04
7/30/2019 1.0116
7/31/2019 1.005
8/1/2019 1.035
8/2/2019 1.01
8/6/2019 0.9886
8/7/2019 1.0048
8/8/2019 0.97
8/9/2019 0.9659
8/12/2019 0.965
在上述数据框中,缺少 2019 年 7 月 29 日和 2019 年 8 月 5 日。这些是工作日。我需要填充缺少的工作日日期并分配缺少日期旁边的“费率”。例如:将 2019 年 7 月 30 日的“汇率”也分配给缺失的 2019 年 7 月 29 日。请建议。谢谢
解决方案
例如,您可以使用pd.offsets.BDay()
获取下一个工作日。
初始数据框(该Dates
列是 DateTime 类型):
Dates rates
0 2019-07-26 1.0400
1 2019-07-30 1.0116
2 2019-07-31 1.0050
3 2019-08-01 1.0350
4 2019-08-02 1.0100
5 2019-08-06 0.9886
6 2019-08-07 1.0048
7 2019-08-08 0.9700
8 2019-08-09 0.9659
9 2019-08-12 0.9650
然后:
df = df.merge(
pd.DataFrame({'Dates':df['Dates'] + pd.offsets.BDay()}), on='Dates', how='outer'
).sort_values('Dates').bfill().dropna().reset_index(drop=True)
print(df)
印刷:
Dates rates
0 2019-07-26 1.0400
1 2019-07-29 1.0116
2 2019-07-30 1.0116
3 2019-07-31 1.0050
4 2019-08-01 1.0350
5 2019-08-02 1.0100
6 2019-08-05 0.9886
7 2019-08-06 0.9886
8 2019-08-07 1.0048
9 2019-08-08 0.9700
10 2019-08-09 0.9659
11 2019-08-12 0.9650