我有一个Panda DataFrame中两只股票的协方差矩阵,我想创建一个只有该矩阵对角线的数据帧。
矩阵如下:
AAPL GM
AAPL 0.079894 0.034113
GM 0.034113 0.060838
我想要一个带有索引[AAPL, GM]
和一个名为covariance
的列的DataFrame或类似的东西:
covariance
AAPL 0.079894
GM 0.060838
有没有一种简单的方法可以做到这一点,或者我最终会为循环编写代码来填充其他数据结构吗?
谢谢
使用np.diag
选择数据帧的对角线,然后使用pd.DataFrame
构造函数创建您想要的输出:
df_diag = pd.DataFrame(data=np.diag(df), columns=['covariance'], index=df.index)
输出
covariance
AAPL 0.079894
GM 0.060838
您可以使用查找:
result = pd.DataFrame(index=df.index, data=df.lookup(df.index, df.columns), columns=['covariance'])
print(result)
输出
covariance
AAPL 0.079894
GM 0.060838