python - 按月匹配两个数据框索引

标签 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年1月为2012-01-30),然后查看该日期之前的52周进行A over 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

最佳答案

如果df_month中只有一个条目您想使用(我如何理解这个问题)而不是您可以在索引上创建 bool 掩码以返回 df_month 的正确行.

两个索引都必须是 pandas datetime 数据类型,以便您可以访问 .month

如果你有回归系数C和索引idf_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

关于python - 按月匹配两个数据框索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48591644/

相关文章:

python - 使用 Pandas & Folium 在 map 上绘制标记

python - 将两个 Pandas Dataframe 转换为每个组的元组字典

python - 如何从 pd.dataframe 获取 bool 值 'True' 的坐标?

c# - 如何获得下一个工作日,不包括周末和节假日

javascript - 存储超过 4 位数年份的日期

c# - 在插入 MySql 数据库的 DateTime 对象上获取 "System.FormatException: Input string was not in a correct format."

python - 使用 Python 模块将 Pdf 转换为 XML/json

python - 使用 python 从 axigen 服务器读取电子邮件

python - Pycharm (Mac) 上的 Tensorflow 导入错误

python - Pandas.apply 在 spacy doc 列上返回无值