python - 将嵌套字典转换为数据帧,其中键作为行名,值中的字典作为列?

标签 python pandas

我有一个由大量频率计数组成的数据框,其中列标签是正在计算的特征,行标签是正在计算的特征的页面。我需要找到每个特征在所有页面上出现的概率,因此我尝试迭代每一列,将每个总和除以所有列的总和,并将结果保存在字典中作为与键对应的值,但没有成功这是从列标签中获取的。

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

    |---------|----------|
    | 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/

相关文章:

python - 如何使用列名列表从旧数据帧创建新的 pandas 数据帧

pandas - 如何重新组织 pandas 数据框

python - 测试使用 mysql 的 python 应用程序

python - 如何根据 Python 中连续元素的距离拆分数字列表?

python - 使用 Pandas 读取 CSV 并处理评论

python - 使用 Python 从带有关键字的文本文件中提取数据

python - 将条件行数据组合到新的数据框中

python - Hyperledger Indy 节点配置错误导致错误,并显示一条消息: "undefined symbol: indy_crypto_init_logger"

python - 从返回的元组或列表数据中打印 1 项

python - MongoEngine : ImproperlyConfigured: settings. 数据库配置不正确