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