我有一个由大量频率计数组成的数据框,其中列标签是正在计算的特征,行标签是正在计算的特征的页面。我需要找到每个特征在所有页面上出现的概率,因此我尝试迭代每一列,将每个总和除以所有列的总和,并将结果保存在字典中作为与键对应的值,但没有成功这是从列标签中获取的。
我的数据框看起来像这样:
|---------|----------|
| Word1 | Word2 |
----|---------|----------|
pg1 | 0 | 1 |
----|---------|----------|
pg2 | 3 | 2 |
----|---------|----------|
pg3 | 9 | 0 |
----|---------|----------|
pg4 | 1 | 6 |
----|---------|----------|
pg5 | 2 | 3 |
----|---------|----------|
pg6 | 0 | 2 |
----|---------|----------|
我希望我的输出是一个字典,其中单词作为键,总和(列)/总和(表)作为值,如下所示:
{ Word1: .517 , Word2: .483 }
到目前为止,我已尝试以下操作:
dict = {}
for x in df.sum(axis = 0):
dict[x] = x / sum(df.sum(axis = 0))
print(dict)
但该命令永远不会完成。我不确定我的代码是否做错了,或者我的笔记本电脑是否根本没有能力处理数据集的大小。
有人能指出我正确的方向吗?
最佳答案
看起来您可以获取每列的总和,然后除以 DF 中整个底层数组的总和的平展值,例如:
df.sum().div(df.values.sum()).to_dict()
这会给你:
{'Word1': 0.5172413793103449, 'Word2': 0.4827586206896552}
关于python - 将嵌套字典转换为数据帧,其中键作为行名,值中的字典作为列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59921512/