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

Python Pandas:返回连续缺失的工作日日期,并在数据框中缺失日期旁边指定速率,python,pandas,Python,Pandas,我尝试了上述代码,但无法修复连续丢失的工作日。它只能修复1天。在上述数据框中,2019年7月29日和8月5日、7日、8日、9日缺失。这些是工作日。我需要填充缺失的工作日日期,并分配缺失日期旁边的“速率”。例如:将2019年7月30日的“费率”分配给缺失的2019年7月29日,依此类推所有缺失的日期。请建议。谢谢,我期待以下输出 Dates rates 7/26/2019 1.04 7/30/2019 1.0116 7/31/2019 1.005 8/1/2019 1

我尝试了上述代码,但无法修复连续丢失的工作日。它只能修复1天。在上述数据框中,2019年7月29日和8月5日、7日、8日、9日缺失。这些是工作日。我需要填充缺失的工作日日期,并分配缺失日期旁边的“速率”。例如:将2019年7月30日的“费率”分配给缺失的2019年7月29日,依此类推所有缺失的日期。请建议。谢谢,我期待以下输出

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)
您可以创建一系列的所有工作日,然后外部合并并填充缺少的值。这将在初始数据框中保留任何非工作日(如果有),并在填充中使用它们的值

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
您可以创建一系列的所有工作日,然后外部合并并填充缺少的值。这将在初始数据框中保留任何非工作日(如果有),并在填充中使用它们的值

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
您可以使用与仅为工作日创建费率中缺少的所有值:

        Dates   rates
0  2019-07-26  1.0400
7  2019-07-29  1.0116
1  2019-07-30  1.0116
2  2019-07-31  1.0050
3  2019-08-01  1.0350
4  2019-08-02  1.0100
8  2019-08-05  0.9886
5  2019-08-06  0.9886
9  2019-08-07  0.9650
10 2019-08-08  0.9650
11 2019-08-09  0.9650
6  2019-08-12  0.9650
您可以使用与仅为工作日创建费率中缺少的所有值:

        Dates   rates
0  2019-07-26  1.0400
7  2019-07-29  1.0116
1  2019-07-30  1.0116
2  2019-07-31  1.0050
3  2019-08-01  1.0350
4  2019-08-02  1.0100
8  2019-08-05  0.9886
5  2019-08-06  0.9886
9  2019-08-07  0.9650
10 2019-08-08  0.9650
11 2019-08-09  0.9650
6  2019-08-12  0.9650

这可能是更好的方法。我不确定初始数据帧是否有非工作日,是否应该在我的合并案例中使用和保留这些数据帧,或者忽略并删除这些数据帧,就像你的情况一样。@Ben.T..我在很长一段时间后使用了这段代码,但抛出了错误“ValueError:index必须是单调递增或递减的”…请给出任何建议。@Akash df.Dates.min和df.Dates.max的结果是什么?我有这种感觉,因为它们在原点处是字符串,取最小值和最大值可能会有问题?@Ben T…谢谢。我将字符串转换为datetime格式,它成功了。但它生成了第三列,所有行中都有“NAN”。那一列是怎么产生的?@Akash在这一列上,我不知道是什么原因导致nan的列被填满了,列的名称是什么?这可能是更好的方法。我不确定初始数据帧是否有非工作日,是否应该在我的合并案例中使用和保留这些数据帧,或者忽略并删除这些数据帧,就像你的情况一样。@Ben.T..我在很长一段时间后使用了这段代码,但抛出了错误“ValueError:index必须是单调递增或递减的”…请给出任何建议。@Akash df.Dates.min和df.Dates.max的结果是什么?我有这种感觉,因为它们在原点处是字符串,取最小值和最大值可能会有问题?@Ben T…谢谢。我将字符串转换为datetime格式,它成功了。但它生成了第三列,所有行中都有“NAN”。该列是如何生成的?@Akash在这一列中,我不知道是什么原因导致该列填充nan,该列的名称是什么?您的初始数据帧是否有非业务日期?如果是这样的话,他们该怎么办?这个问题实际上与你的问题完全相同。这是否回答了你的问题?您的初始数据帧是否可以有非业务日期?如果是这样的话,他们该怎么办?这个问题实际上与你的问题完全相同。这是否回答了你的问题?