如何使用基于对名称的 Series 中的元素填充方形对称 DataFrame?
How to populate a square, symmetric DataFrame with elements from a Series based on pair names?
在下面的空DataFrame中,它是一个对称的正方形矩阵,
df = pd.DataFrame(np.zeros((6,6)), index=names, columns=names)
df
长得像
MCD VZ JPM PG WBA NKE
MCD 0.0 0.0 0.0 0.0 0.0 0.0
VZ 0.0 0.0 0.0 0.0 0.0 0.0
JPM 0.0 0.0 0.0 0.0 0.0 0.0
PG 0.0 0.0 0.0 0.0 0.0 0.0
WBA 0.0 0.0 0.0 0.0 0.0 0.0
NKE 0.0 0.0 0.0 0.0 0.0 0.0
如何从 一个不同的 DataFrame 的最后一列接收相应的元素,如下所示,df2.mi
,根据像 ('MCD','VZ')
这样的对名,以及 (i,j)
和 (j,i)
的相同值(因为矩阵对称)?例如,对于('MCD','VZ')
和('VZ','MCD')
这两个地方,0.263357
应该出现在df
中。一个只有 3 个名字的玩具答案就可以了。
或者,根据描述的 (i,j)
规则,是否有通过 for
循环填充方形对称矩阵的通用算法?
您可以将 pivot
和 add
值 + 转置值 (.T
) 到 df
.
假设 df2
将 DataFrame 的结构发布为图片(下面的值是随机的):
z = df2.pivot('asset1', 'asset2', 'mi')
df.add(z, fill_value=0).add(z.T, fill_value=0)
输出:
JPM MCD NKE PG VZ WBA
JPM 0.000000 0.532617 0.322079 0.377284 0.242471 0.020071
MCD 0.532617 0.000000 0.504874 1.494942 0.737827 0.036683
NKE 0.322079 0.504874 0.000000 0.726165 0.255161 0.645917
PG 0.377284 1.494942 0.726165 0.000000 0.654995 0.593592
VZ 0.242471 0.737827 0.255161 0.654995 0.000000 0.107172
WBA 0.020071 0.036683 0.645917 0.593592 0.107172 0.000000
在下面的空DataFrame中,它是一个对称的正方形矩阵,
df = pd.DataFrame(np.zeros((6,6)), index=names, columns=names)
df
长得像
MCD VZ JPM PG WBA NKE
MCD 0.0 0.0 0.0 0.0 0.0 0.0
VZ 0.0 0.0 0.0 0.0 0.0 0.0
JPM 0.0 0.0 0.0 0.0 0.0 0.0
PG 0.0 0.0 0.0 0.0 0.0 0.0
WBA 0.0 0.0 0.0 0.0 0.0 0.0
NKE 0.0 0.0 0.0 0.0 0.0 0.0
如何从 一个不同的 DataFrame 的最后一列接收相应的元素,如下所示,df2.mi
,根据像 ('MCD','VZ')
这样的对名,以及 (i,j)
和 (j,i)
的相同值(因为矩阵对称)?例如,对于('MCD','VZ')
和('VZ','MCD')
这两个地方,0.263357
应该出现在df
中。一个只有 3 个名字的玩具答案就可以了。
或者,根据描述的 (i,j)
规则,是否有通过 for
循环填充方形对称矩阵的通用算法?
您可以将 pivot
和 add
值 + 转置值 (.T
) 到 df
.
假设 df2
将 DataFrame 的结构发布为图片(下面的值是随机的):
z = df2.pivot('asset1', 'asset2', 'mi')
df.add(z, fill_value=0).add(z.T, fill_value=0)
输出:
JPM MCD NKE PG VZ WBA
JPM 0.000000 0.532617 0.322079 0.377284 0.242471 0.020071
MCD 0.532617 0.000000 0.504874 1.494942 0.737827 0.036683
NKE 0.322079 0.504874 0.000000 0.726165 0.255161 0.645917
PG 0.377284 1.494942 0.726165 0.000000 0.654995 0.593592
VZ 0.242471 0.737827 0.255161 0.654995 0.000000 0.107172
WBA 0.020071 0.036683 0.645917 0.593592 0.107172 0.000000