在Pandas中,有没有办法将列中的所有其他单元格划分为单元格?

时间:2016-04-23 20:14:22

标签: python pandas

我们说我有一个矩阵:

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。

1 个答案:

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