python - 从数据框内容创建字典(主题作为键,嵌入作为值)
问题描述
包含以下内容的数据框
0 1 2 3 4 5 0 位评论者#0 -0.016271 0.011541 0.011903 -0.001355 0.008702 1 位评论者#1 -0.037961 0.033415 0.020643 0.004748 0.014523 2 位审稿人#2 -0.019863 0.019906 0.017248 0.006216 0.008826 3 位审稿人#3 -0.021029 0.016401 0.010772 0.001874 0.005772 4 位审稿人#4 -0.013409 0.011703 0.011249 0.000111 0.009319 5 位审稿人#5 -0.008549 0.007816 0.007859 0.000984 0.005491 6 位审稿人#6 -0.01634 0.017007 0.014637 0.005241 0.008135 7 位评论者#7 -0.017075 0.016119 0.013666 0.00314 0.008786 8 位审稿人#8 -0.030823 0.020217 0.012402 -0.003165 0.009643 9 位评论者#9 -0.038311 0.026252 0.017619 0.003568 0.003972 10 没收#0 -0.007147 0.007387 0.010867 0.000735 0.011244 11 没收#1 -0.016917 0.014412 0.016182 0.001859 0.015596 12 没收#2 -0.004854 0.004091 0.005075 -0.000566 0.00458 13 没收#3 -0.02642 0.021311 0.018871 -0.001843 0.017033 14 没收#4 -0.016161 0.013325 0.013113 -0.001036 0.011385 15 没收#5 -0.0131 0.0117 0.013829 -0.000861 0.01225 16 没收#6 -0.006454 0.005335 0.006634 -0.001038 0.006322 17 没收#7 -0.006855 0.005225 0.007626 -0.003071 0.009048 18 没收#8 -0.019227 0.015683 0.016805 -0.004709 0.019453 19 没收#9 -0.010685 0.011237 0.011653 0.003006 0.007464
现在我们想要一个字典如下
字典 = { 0:{[审稿人#0 -0.016271 0.011541 0.011903 -0.001355 0.008702],[没收#0 -0.007147 0.007387 0.010867 0.000735 0.011244]} 1:{[审稿人#1 -0.016271 0.011541 0.011903 -0.001355 0.008702],[没收#1 -0.007147 0.007387 0.010867 0.000735 0.011244]}, . . . 9:{[审稿人#9 -0.016271 0.011541 0.011903 -0.001355 0.008702],[没收#9 -0.007147 0.007387 0.010867 0.000735 0.011244]} }
提示:在数据框内容中,每一行代表每个单词的主题嵌入(我们有 10 个主题 #0 到 #9),例如评论者#0 到评论者#9,我们可以通过应用获取数据框中每一行的主题(0 到 9)流动的想法:
对于 dataframe.index 中的 inx: 主题 = inx % 10
非常感谢您的想法和帮助
解决方案
听起来这就是你所追求的:
import pandas as pd
from collections import defaultdict
df = pd.DataFrame([
{0: 'reviewers#0', 1: 1.0, 2: 2.0, 3: 3.0},
{0: 'reviewers#1', 1: 4.0, 2: 5.0, 3: 6.0},
{0: 'confiscated#0', 1: 7.0, 2: 8.0, 3: 9.0},
{0: 'confiscated#1', 1: 10.0, 2: 11.0, 3: 12.0},
])
print(df)
result = defaultdict(list)
for _, values in df.iterrows():
values = list(values)
result[int(values[0].split('#')[1])] += [values[1:]]
print(result)
结果:
0 1 2 3
0 reviewers#0 1.0 2.0 3.0
1 reviewers#1 4.0 5.0 6.0
2 confiscated#0 7.0 8.0 9.0
3 confiscated#1 10.0 11.0 12.0
defaultdict(<class 'list'>, {0: [[1.0, 2.0, 3.0], [7.0, 8.0, 9.0]], 1: [[4.0, 5.0, 6.0], [10.0, 11.0, 12.0]]})
即数据框具有您描述的结构,result
字典是您需要的结果吗?
如果您需要defaultdict
成为一个普通的 dict,则可以进行一些小的更改,或者您可以强制转换它 - 但这不应该成为问题。
推荐阅读
- python - 将变量从 html 5 表单传递到 python 代码
- webix - webix 上传器:捕获错误并再次上传文件
- elasticsearch - 升级到 7.9.0 时无法在 elasticsearch.xpack.security 中加载插件类
- php - PHP - 带有单引号或双引号的错误 base64 hmac sha256 编码
- django - ValueError at /like/ Field 'id' expected a number but got ''
- swift - 使用 ParseSwift 在 mongo DB 上进行查询
- nestjs - 为什么nestjs服务没有注入护照策略?
- flutter - 如何在飞镖图中添加重复键?
- c# - 使用代码在不同模式中的两个表之间进行实时映射
- operating-system - 在上下文切换期间,操作系统是否使用 PCB 或内核堆栈来恢复寄存器?