我有一个数据框。我想把每一列的内在产品与自己结合起来并总结一下。
到目前为止,我已经这样做了:
import pandas as pd
import numpy as np
np.random.seed([3, 1415])
df = pd.DataFrame(np.random.rand(10, 3).round(2), columns=['one', 'two', 'three'])
inner_df = df.T.dot(df)
print inner_df
print
tot = 0
for i in range(len(inner_df)):
tot += inner_df.iloc[i, i]
print "total =", tot
one two three
one 3.7611 3.4669 3.4766
two 3.4669 3.6323 3.1140
three 3.4766 3.1140 3.5214
total = 10.9148
这让我得到了我需要的东西,但感觉非常笨拙。什么是更清洁的方式?
答案 0 :(得分:1)
矢量化解决方案看起来像这样。
import pandas as pd
import numpy as np
np.random.seed([3, 1415])
df = pd.DataFrame(np.random.rand(10, 3).round(2), columns=['one', 'two', 'three'])
# pandas approach
print df.mul(df).sum().sum()
# numpy approach
print np.square(df.values).sum()
10.9148
10.9148