【问题标题】:Python : Return the missing weekdays dates and assign rate next to missing datePython:返回缺少的工作日日期并在缺少的日期旁边分配费率
【发布时间】:2020-01-27 16:20:48
【问题描述】:
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 日。请建议。谢谢

【问题讨论】:

标签: python pandas


【解决方案1】:

您可以使用例如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

【讨论】:

  • 谢谢我的朋友!我之前卡住了 pd.date_range。
  • 我最近使用了这段代码,但发现它可以用前向填充来估算 1 天的缺失。如果因此缺少 3 天并用前向填充来估算所有这三个天,如何解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多