需要帮助将两个数据帧相乘吗

2024-09-19 23:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个相同维度的数据帧,我只想将它们相乘,得到一个包含元素乘积的新数据帧。然而,相反,我得到了6列除了“NaN”之外什么都没有。。。你知道吗

以下是两个数据帧:

>>> 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\u returns=期间\u子集\u数据*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]

我在运行别人写的代码,显然是为他们工作,所以我很难理解为什么它不为我工作。。。你知道吗


Tags: columns数据元素normdatananreturnsrows
2条回答

这是一个非常常见的问题,最简单的解决方法是:

norm_returns = period_subset_data*facmat.values

但是,我试着

norm_returns = period_subset_data*facmat

和你给我们的样本数据吻合得很好。你知道吗

如果需要基于索引进行乘法,可以尝试以下操作。我从here找到了这个答案。你知道吗

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

相关问题 更多 >