合并季度和月度数据,同时对多指数进行ffinll



我正在尝试合并季度系列和月度系列,在这个过程中;下采样";季度系列。这两个数据帧都包含一个DATE列BANK,其余列是不同的值,可以是月度格式,也可以是季度格式。我遇到的复杂情况是它是一个多索引,所以如果我尝试:

merged_data=df1.join(df2).reset_index(['DATE', 'BANK_CODE']).ffill() 

直到最后一个月数据点的季度数据的正向填充并没有按照我的意图为每个银行完成。有人能帮忙吗?注意:我也尝试过单独对季度数据帧进行重新采样,但在某个日期(应该是月度数据中的最新日期(之前,我不知道如何将其降到月度水平。

df2 = df2.set_index(['DATE']).groupby(['BANK']).resample('M')['VALUE'].ffill()
df1:
Date       Bank    Value1  Value2
2021-06-30 bank 1  2000    7000
2021-07-31 bank 1  3000    2000
2021-06-30 bank 2  6000    9000
df2: 
Date       Bank    Value1  Value2
2021-06-30 bank 1  2000    5000
2021-09-30 bank 1  5000    4000
2021-06-30 bank 2  9000    10000

这是一个小例子

使用提供的数据,假设df1是每月一次,df2是每季度一次。

设置索引并将季度数据重新采样为每月:

# monthly data
x1 = df1.set_index(['Bank','Date'])
# quarterly data, resampling back to monthly
x2 = ( df2.set_index('Date')
.groupby('Bank')
.resample('M')
.ffill()
.drop(columns='Bank')
)

合并两者-我想你想要的是产品,而不是联合:

x1.join(x2, lsuffix='_m', rsuffix='_q', how='outer').fillna(0)
Value1_m  Value2_m  Value1_q  Value2_q
Bank   Date                                              
bank 1 2021-06-30    2000.0    7000.0      2000      5000
2021-07-31    3000.0    2000.0      2000      5000
2021-08-31       0.0       0.0      2000      5000
2021-09-30       0.0       0.0      5000      4000
bank 2 2021-06-30    6000.0    9000.0      9000     10000

_m是来自df1的值就足够了,_q是来自df2的值。我想你会知道如何解释或处理同一日期的月度和季度价值之间的差异。

正如您所看到的,无需指定间隔,这是自动提供的。

相关内容

  • 没有找到相关文章

最新更新