python pandas crosstab sumproduct square matrix

时间:2017-10-21 01:00:14

标签: python pandas

我正在寻找帮助,使用类似sumproduct的函数从现有数据框架创建子数据框。我想使用列标题将此表转换为小额产品:

    dan ste bob
t1  0   2   0
t2  2   0   1
t3  2   1   0
t4  1   0   2
t5  0   1   2

列标题成为索引,sum product为值:

    dan ste bob
dan 9   2   4
ste 2   6   2
bob 4   2   9

dan x dan = 9(0 * 0)+(2 * 2)+(2 * 2)+(1 * 1)+(0 * 0)

提前致谢!

2 个答案:

答案 0 :(得分:2)

您可以使用dot及其转置:

In [11]: df.T.dot(df)
Out[11]:
     dan  ste  bob
dan    9    2    4
ste    2    6    2
bob    4    2    9

答案 1 :(得分:0)

你应该使用.dot这只是为了好玩

df1=pd.DataFrame(index=df.columns,columns=df.columns)
df1.apply(lambda x : [sum(df[x.name]*df[y]) for y in x.index])
Out[65]: 
     dan  ste  bob
dan    9    2    4
ste    2    6    2
bob    4    2    9