我有以下主题文档概率矩阵的数据框
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, 1.0) 的第 0 列分别表示主题 1 和 2 的索引。数据框有 81 列和 2 行。我想总结所有列并获得另一个数据框。例如,对于第 1 列,对于所有列,输出将为 sum(0.002735042735040934 + 1.7996105239810978e-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
编辑:DataFrame.div
用于除法:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句