Python Pandas:返回连续缺失的工作日日期,并在数据框中缺失日期旁边分配速率

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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日,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
答案

您可以将reindexreindex结合使用,以仅在工作日的费率中创建所有缺失值:

bdate_range
另一答案

您可以创建所有工作日的bdate_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 Seriesouter缺失值。这将在您的初始DataFrame中保留所有非营业日(如果有的话),并将在填充中使用其值。

merge

bfill

以上是关于Python Pandas:返回连续缺失的工作日日期,并在数据框中缺失日期旁边分配速率的主要内容,如果未能解决你的问题,请参考以下文章

返回连续的缺失工作日日期并在缺失日期旁边分配费率

python pandas中describe()各项含义及求值

pandas数据缺失处理

pandas数据缺失处理

pandas使用reindex函数为日期索引中有缺失日期的dataframe进行索引重置(所有日期都连续)并使用fill_value参数为行进行默认填充

技巧 Pandas 数据填充