python - Python Pandas:返回连续缺失的工作日日期并在数据框中缺失日期旁边分配速率
问题描述
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/12/2019 0.965
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)
我尝试了上面的代码,但它无法修复连续丢失的工作日。它只能修复1天。在上述数据框中,缺少 2019 年 7 月 29 日和 8 月 5 日、7 日、8 日、9 日。这些是工作日。我需要填充缺少的工作日日期并分配缺少日期旁边的“费率”。例如:将 2019 年 7 月 30 日的“汇率”分配给缺失的 2019 年 7 月 29 日,依此类推,用于所有缺失的日期。请建议。谢谢我期待以下输出
Dates rates
7/26/2019 1.04
7/29/2019 1.0116
7/30/2019 1.0116
7/31/2019 1.005
8/1/2019 1.035
8/2/2019 1.01
8/5/2019 0.9886
8/6/2019 0.9886
8/7/2019 0.965
8/8/2019 0.965
8/9/2019 0.965
8/12/2019 0.965
解决方案
您可以使用reindex
withbdate_range
仅创建工作日费率中的所有缺失值:
new_df = df.set_index('Dates')\
.reindex( pd.bdate_range(df.Dates.min(), df.Dates.max(), name='Dates'),
method='bfill')\
.reset_index()
print (new_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 0.9650
9 2019-08-08 0.9650
10 2019-08-09 0.9650
11 2019-08-12 0.9650
推荐阅读
- javascript - XMLHttpRequest 替换元素不适用于 LocalStorage
- flutter - 在颤动的屏幕上显示来自服务器的 JSON 消息
- css - 向 shadowDOM 中动态创建的样式表添加规则
- logstash - Cloudfront 登录 Prometheus
- c# - (a,b) = (1,2) 是什么意思?
- python - 在 Python 中循环正则表达式,直到输入正确
- javascript - 限制js文件内容的范围
- javascript - 在 React 应用程序中更新动态呈现的元素的问题
- python - 在通过 Python 使用 Root 中创建带有分支的 TTree
- rest - 如何使用支持 Rest 和 GraphQL 的 light-4j 构建应用程序