首页 > 解决方案 > 将嵌套字典转换为数据框,键作为行名,值中的字典作为列?

问题描述

我有一个包含大量频率计数的数据框,其中列标签是正在计算的特征,而行标签是正在计算特征的页面。我需要找到每个功能在所有页面中出现的概率,所以我尝试遍历每一列,将每个总和除以所有列的总和,并将结果保存在字典中作为与键对应的值这是取自列标签。

我的数据框看起来像这样:

    |---------|----------|
    | Word1   | Word2    | 
----|---------|----------|
pg1 |    0    |     1    |
----|---------|----------|
pg2 |    3    |     2    |
----|---------|----------|
pg3 |    9    |     0    |
----|---------|----------|
pg4 |    1    |     6    |
----|---------|----------|
pg5 |    2    |     3    |
----|---------|----------|
pg6 |    0    |     2    |
----|---------|----------|

我希望我的输出是一个字典,其中单词作为键, sum(column) / sum(table) 作为值,如下所示:

{ Word1: .517 ,  Word2: .483 }

到目前为止,我已经尝试了以下操作:

dict = {}
for x in df.sum(axis = 0):
    dict[x] = x / sum(df.sum(axis = 0))
print(dict)

但命令永远不会完成。我不确定我的代码是否做错了,或者我的笔记本电脑是否根本没有能力处理我的数据集的大小。

谁能指出我正确的方向?

标签: pythonpandas

解决方案


看起来您可以取每列的总和,然后除以 DF 中整个基础数组的总和的展平值,例如:

df.sum().div(df.values.sum()).to_dict()

这会给你:

{'Word1': 0.5172413793103449, 'Word2': 0.4827586206896552}

推荐阅读