我们说我有一个矩阵:
import pandas as pd
pd.DataFrame([[1, 2, 3], [3, 4, 5], [6, 7, 8]], columns=['A', 'B', 'C'], index=['X', 'Y', 'Z'])
有没有办法将每个数字除以其列中其他数字的总和?第一个数字1,此处为A,X,为1 /(3 + 6)= 0.1111。
答案 0 :(得分:4)
你可以做到
>>> df / (df.sum() - df)
A B C
X 0.111111 0.181818 0.230769
Y 0.428571 0.444444 0.454545
Z 1.500000 1.166667 1.000000
有效,因为df.sum()
为我们提供了列总和:
>>> df.sum()
A 10
B 13
C 16
dtype: int64
当我们减去df
时,总和广播,所以每个元素都成为合适的分母:
>>> df.sum() - df
A B C
X 9 11 13
Y 7 9 11
Z 4 6 8