Умножение значений двух фреймов данных с другим индексом Datetime - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть 2 фрейма данных с другим индексом Datetime, поэтому разной длины в строках, но одинаковой длины в столбцах:

  • Ежемесячный фрейм данных, df1. Представляет веса.
  • Дневной фрейм данных, df2. Представляет возвраты.

Я хочу умножить значение января 1985 года от df1 на все значения февраля 1985 года от df2 и т. Д. До конца кадра данных (то есть января 2020 года) для каждого колонка. Моя идея состоит в том, что это приводит к «взвешенным доходам», основанным на весах предыдущего периода.

Я пытаюсь выполнить это sh, используя a для l oop при сопоставлении годовых и месячных индексов, но это приводит к значениям nan.

for date in df1.index.tolist():   
    df2.loc[(df2.index.year == date.year) & (df2.index.month == date.month)] *= df1 

Я пробовал разные операторы if. Я также пытался создать фрейм данных с ежедневным индексом, заполненным весами, равной длины в строках и столбцах индекса возврата. Сделав это, я мог бы использовать .mul (), поскольку кадры данных имели бы одинаковую длину.

Однако мне не удалось найти решение и надеяться, что кто-то из вас сможет мне помочь.

Ниже я написал пример того, как выглядят два кадра данных и как должен выглядеть мой желаемый результат. Я надеюсь, что кто-то может помочь мне с этим вопросом. Заранее спасибо!

        df1 
            DatetimeIndex         a    b
            1985-01-31 00:00:00   0.1  0.4      
            1985-02-28 00:00:00   0.4  0.5   
            ..........
            2019-12-31 00:00:00   0.5  0.6

        df2
            DatetimeIndex         a    b
            1985-02-01 00:00:00   1.0  3.0
            1985-02-04 00:00:00   2.0  4.0
            1985-03-01 00:00:00   3.0  2.0
            1985-03-02 00:00:00   4.0  1.0
            .........
            2020-01-01 00:00:00   8.0  6.0
            2020-01-25 00:00:00   4.0  2.0  

    Resulting df
            DatetimeIndex         a    b
            1985-02-01 00:00:00   0.1  1.2
            1985-02-04 00:00:00   0.2  1.6
            1985-03-01 00:00:00   1.2  1.0
            1985-03-02 00:00:00   1.6  0.5
            ...........
            2020-01-01 00:00:00   4.0  3.6
            2020-01-25 00:00:00   2.0  1.2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...