2017-10-21 83 views
1

我在尋找使用類似sumproduct的功能從現有數據框創建子數據框的幫助。我想用列標題該錶轉換成一個小數目的產品:python pandas crosstab sumproduct square matrix

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

列標題成爲索引和的乘積和的是值:

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

擔X擔= 9(0 * 0)+(2 * 2)+(2 * 2)+(1 * 1)+(0 * 0)

在此先感謝!

+1

IDK的。我想你只是使用'DataFrame.dot()'方法來做矩陣乘法 – 0TTT0

回答

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 
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