Нужна помощь в умножении двух кадров данных Pandas - PullRequest
0 голосов
/ 04 октября 2018

У меня есть два кадра данных одинакового размера, и я просто хочу умножить их, чтобы получить новый кадр данных, содержащий произведение их элементов.Однако вместо этого я получаю 6 столбцов только с «NaN» s ...

Это два кадра данных:

>>> period_subset_data
               SP500    NASDAQ      US20
1999-08-02  0.004698 -0.005727  0.000751
1999-08-03 -0.005810 -0.007322 -0.002250
...              ...       ...       ...
2015-04-22  0.002943  0.002129 -0.011747

[4103 rows x 3 columns]

>>> facmat
               SP500    NASDAQ      US20
1999-08-02  0.979367  0.670188  1.696232
1999-08-03  0.979367  0.670188  1.696232
...              ...       ...       ...
2015-04-21  0.979367  0.670188  1.696232
2015-04-22  0.979367  0.670188  1.696232

[4103 rows x 3 columns]

Когда я пытаюсь их умножить, вот чтоЯ получаю: norm_returns = period_subset_data * facmat

>>> norm_returns
            SP500  NASDAQ  US20  (SP500,)  (NASDAQ,)  (US20,)
1999-08-02    NaN     NaN   NaN       NaN        NaN      NaN
1999-08-03    NaN     NaN   NaN       NaN        NaN      NaN
...           ...     ...   ...       ...        ...      ...
2015-04-21    NaN     NaN   NaN       NaN        NaN      NaN
2015-04-22    NaN     NaN   NaN       NaN        NaN      NaN

[4103 rows x 6 columns]

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

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

это очень распространенная проблема, самый простой способ это сделать:

norm_returns = period_subset_data*facmat.values

Тем не менее, я попытался сделать просто

norm_returns = period_subset_data*facmat

, и он отлично работал с образцомданные, которые вы нам дали.

0 голосов
/ 05 октября 2018

Вы можете попробовать следующее, поскольку вам нужно умножить на основе индекса.Я нашел этот ответ от здесь .

pd.DataFrame(df.values*df2.values, columns=df.columns, index=df.index)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...