按月匹配两个数据帧索引

时间:2018-02-02 22:16:30

标签: python pandas datetime dataframe indexing

我有两个数据帧,一个是每周频率,另一个是每月频率:

df_week:
               A   B
2012-01-02    0.1 0.2
2012-01-09    0.4 0.3
2012-01-16    0.4 0.4
2012-01-23    0.3 0.3
2012-01-30    0.2 0.4
2012-02-06    0.1 0.5

每月数据(空):

df_monthly
              A   
2012-01-31   NaN 
2012-02-29   NaN 
2012-03-31   NaN

我想要做的是找出每个月的最后一周(例如,2012-01-30 2012年1月),然后查看日期前52周回归A超过B,并记录输入为df_monthly.loc [' 2012-01-31',' A']。到目前为止我所拥有的是循环遍历df_week:

for i in range(52, len(df_week)-1): 
    if df_week.index[i].month ~= df_week.index[i+1].month: #find out last week of the month
        temp = df_week.iloc[i-52, :]
        regress temp.A on temp.B

我现在有系数,sm.OLS.params [1]。但我不知道如何以简单的方式将其映射到df_monthly数据。从理论上讲,我需要在df_month找到索引j,其中:

 df_month.index[j].month = df_week.index[i].month

1 个答案:

答案 0 :(得分:1)

如果df_month中只有一个条目要使用(我如何理解这个问题),那么你可以在索引上创建一个boolean mask来返回df_month的正确行。

两个索引都需要是pandas datetime数据类型,因此您可以访问.month

如果你有C的回归系数i和索引df_week,你可以做类似的事情

mask = (df_month.index.month == df_week.iloc[i].name.month)
df_month.loc[mask, 'A'] = C
# you can access row with just df_month[mask] also