Как выполнять векторизованные вычисления временных рядов по нескольким фреймам данных в Python - PullRequest
0 голосов
/ 09 июля 2019

Мои три фрейма данных (обозначенные df1, df2, df3) - это 190 строк x 100 000 столбцов данных временных рядов. У меня есть разные макроэкономические данные в каждом фрейме данных. В крайнем левом столбце указаны названия стран, к которым будет принадлежать временной ряд. Первая строка - это строка заголовка отметок времени данных. Мне нужно выполнить расчет временных рядов, используя данные для всех трех фреймов данных, чтобы метки времени совпадали, чтобы соответствующие вычисления с использованием значения 50 x 2500 были одинаковыми для всех трех фреймов данных.

расчет = значение df1 / ((значение df2 - значение df1) * значение df3)

Как я могу сделать это в векторизации?

Маленький Минимальный пример из 3-х фреймов данных и желаемых конечных результатов df

df1 = pd.DataFrame([['Bulgaria', 2, 3, 4, 5], ['Estonia', 2, 3, 4, 5], ['Sweden', 2, 3, 4, 5]], columns=['State', '1990', '1991', '1992', '1993'])


df2 = pd.DataFrame([['Bulgaria', 12, 13, 14, 15], ['Estonia', 12, 13, 14, 15], ['Sweden', 12, 13, 14, 15]], columns=['State', '1990', '1991', '1992', '1993'])

df3 = pd.DataFrame([['Bulgaria', .02, .03, .04, .05], ['Estonia', .02, .03, .04, .05], ['Sweden', .02, .03, .04, .05]], columns=['State', '1990', '1991', '1992', '1993'])

intended_final_df = pd.DataFrame([['Bulgaria', 10, 10, 10, 10], ['Estonia', 10, 10, 10, 10], ['Sweden', 10, 10, 10, 10]], columns=['State', '1990', '1991', '1992', '1993'])

1 Ответ

0 голосов
/ 10 июля 2019

Вам нужно переместить столбец состояния в индекс для всех фреймов данных, а затем использовать этот расчет:

df1 / ((df2-df1)* df3)

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

[d.set_index('State', inplace=True) for d in [df1,df2,df3]]

Выход:

          1990  1991  1992  1993
State                           
Bulgaria  10.0  10.0  10.0  10.0
Estonia   10.0  10.0  10.0  10.0
Sweden    10.0  10.0  10.0  10.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...