Умножьте значения разных Dataframes с разными DatetimeIndex на основе месяца и года в Python - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть 2 разных фрейма данных (Weights = CTPortfolioWeight, Returns = DRXCTVar), оба с разным индексом Datetime (ежемесячный и дневной), но одинаковой длины в столбцах (в столбцах 27 разных валют).

Я хочу добиться следующего:

  • Умножить вес февраля 1985 года для столбца 1 на значения, полученные в марте 1985 года для столбца 1
  • Умножить вес марта 1985 года для столбца 1 с возвращениями за апрель 1985 года для столбца 1
  • ....
  • Умножьте вес декабря 2019 года для столбца 27 на Возвращения января 2020 года для столбца 27

Это должно привести к взвешенным ежедневным доходам на столбец.

Решение 1 Я пытался сделать это путем сопоставления значений различных фреймов данных на основе их индекса месяца и года, но при этом не удалось вообще.

Этот код дает мне фрейм данных DRXCTVar со значениями NaN

for date in CTPortfolioWeight.index.tolist():
DRXCTVar.loc[(DRXCTVar.index.year == date.year) & (DRXCTVar.index.month == date.month)] *= CTPortfolioWeight.shift()

Решение 2 Я также попытался создать новый фрейм данных с ежедневным индексом из DRXCTVar, состоящий из всех весов, основанных на кадре данных CTPortfolioWeight (поскольку я обычно использую умножения фреймов данных с равным DatetimeIndex). Была заполнена только дата, которая присутствовала в месяце в качестве ежедневного информационного кадра (который является последним днем ​​открытых торгов), тогда как другие дни приводили к значению NaN. Я добавил картинку, чтобы прояснить ее.

for date in CTPortfolioWeight.index.tolist():
DRXCTVar.loc[(DRXCTVar.index.year == date.year) & (DRXCTVar.index.month == date.month)] = CTPortfolioWeight.shift()

Я действительно новичок в Python, но в целом справляюсь с этим. Тем не менее, я слишком долго застрял с этим относительно простым вычислением.

Я надеюсь, что найдется кто-то, кто сможет мне помочь. Если что-то неясно, пожалуйста, спросите, и я попытаюсь прояснить это более подробно.

Заранее спасибо, Уолли.

Данные весов и возвратов

Результирующее решение для кадра данных 2

...