Python Pandas:返回连续缺失的工作日日期,并在数据框中缺失日期旁边指定速率
我尝试了上述代码,但无法修复连续丢失的工作日。它只能修复1天。在上述数据框中,2019年7月29日和8月5日、7日、8日、9日缺失。这些是工作日。我需要填充缺失的工作日日期,并分配缺失日期旁边的“速率”。例如:将2019年7月30日的“费率”分配给缺失的2019年7月29日,依此类推所有缺失的日期。请建议。谢谢,我期待以下输出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
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,该列的名称是什么?您的初始数据帧是否有非业务日期?如果是这样的话,他们该怎么办?这个问题实际上与你的问题完全相同。这是否回答了你的问题?您的初始数据帧是否可以有非业务日期?如果是这样的话,他们该怎么办?这个问题实际上与你的问题完全相同。这是否回答了你的问题?