Python 如何汇总数据帧中的每一列?

Python 如何汇总数据帧中的每一列?,python,pandas,dataframe,sum,Python,Pandas,Dataframe,Sum,我有以下主题文档概率矩阵的数据框架 0 1 2 3 4 ... 77 78 79 80 81 1 0.0 9.941665e-23 0.001141 6.837607e-04 0.010396 ... 0.000071 6.475626e-10 1.6

我有以下主题文档概率矩阵的数据框架

    0             1         2             3         4       ...             77            78            79            80            81
1  0.0  9.941665e-23  0.001141  6.837607e-04  0.010396      ...       0.000071  6.475626e-10  1.641026e-02  2.494897e-08  2.017094e-02
2  1.0  2.735043e-03  0.004329  1.915713e-20  0.000202      ...       0.005399  1.367521e-02  1.816478e-12  1.641023e-02  1.366020e-10
其中第0列的值(0.0,1.0)分别表示主题1和主题2的索引。数据帧有81列和2行。我想将所有列相加,得到另一个数据帧。例如,对于第1列,输出为总和(0.0027335042735040934+1.799610523981098E-15),对于所有列。我曾经

col_list = list(df)
df = df[col_list].sum(axis=0)
但这只是印刷

1      0.0027350427350409341.7996105239810978e-15
2          0.0054700854694576.284676740939513e-13
这不是我想要的输出。正确的方法是什么? 在对所有列的每个值按降序排序之后,我希望以这种格式输出每个文档的主题排名

   id      topic-rank
    1          1, 0
    2          1, 0
    3          0, 1
    4          0, 1
        ...
    80         0, 1
    81         1, 0

正确的方法是什么?

问题是值是字符串,所以需要首先将它们转换为
float
s:

s = df.astype(float).sum()
print (s)
1     0.002735
2     0.005470
80    0.016410
81    0.020171
dtype: float64
编辑:用于分割:

df = df.astype(float)

df1 = df.div(df.sum())
print (df1)
              1             2        80            81
1  1.000000e+00  1.000000e+00  0.998241  4.151430e-10
2  6.579826e-13  1.148917e-10  0.001759  1.000000e+00

问题是值是字符串,所以需要首先将它们转换为
float
s:

s = df.astype(float).sum()
print (s)
1     0.002735
2     0.005470
80    0.016410
81    0.020171
dtype: float64
编辑:用于分割:

df = df.astype(float)

df1 = df.div(df.sum())
print (df1)
              1             2        80            81
1  1.000000e+00  1.000000e+00  0.998241  4.151430e-10
2  6.579826e-13  1.148917e-10  0.001759  1.000000e+00

另外,我想将原始数据帧中的每个值与新数据帧中的求和值相除,例如,对于第一列,我们将
0.002735040934
/
0.002735
作为第一行,将
1.799610523981098E-15
/
0.002735
作为第二行,并将fo作为每列。您能在您的答案中包含此评论吗?@SamuelMideksa-请检查编辑后的答案。如果我的答案有帮助,别忘了——点击答案旁边的复选标记,将其从灰色变为填充。谢谢。我还想对结果数据框中的每个值进行排序,即在除法之后按降序排列,以便对它们进行排序。你能在你的回答中也包括这个评论吗?@SamuelMideksa-hmmm,你能指定排序吗?您是否需要第一个值(
1,1
)-
1.000
和最后一个
(2,81)
-
6.579826e-13
?或者需要按某个列进行排序?或者某行?是否需要
df2=pd.DataFrame(-np.sort(-df1,axis=0),columns=df.columns,index=df.index)
?另外,我想将原始数据帧中的每个值除以新数据帧中的求和值,与第一列一样,我们将
0.0027335042735040934
/
0.002735
作为第一行,将
1.799610523981098E-15
/
0.002735
作为第二行,并对每列使用类似的fo。您能在您的答案中包含此评论吗?@SamuelMideksa-请检查编辑后的答案。如果我的答案有帮助,别忘了——点击答案旁边的复选标记,将其从灰色变为填充。谢谢。我还想对结果数据框中的每个值进行排序,即在除法之后按降序排列,以便对它们进行排序。你能在你的回答中也包括这个评论吗?@SamuelMideksa-hmmm,你能指定排序吗?您是否需要第一个值(
1,1
)-
1.000
和最后一个
(2,81)
-
6.579826e-13
?或者需要按某个列进行排序?或者某行?您需要
df2=pd.DataFrame(-np.sort(-df1,axis=0),columns=df.columns,index=df.index)