【问题标题】:Converting data-frame into a dictionary by having the multiple lists?通过拥有多个列表将数据框转换为字典?
【发布时间】:2019-06-28 01:27:12
【问题描述】:

我有一个数据框 –mydata- 由 500 行组成,如下所示:

Id  Name    Score
R1  sam     76
R1  Sosan    8
..  …   … 
R4   jack   2
R4  Tom     76
R4   samy    8
R5  Check    9 
…    …                 

现在,我想将数据框转换为字典,以便唯一 ID 成为键,唯一 ID 的行成为列表。例如,考虑到上面的例子,R1 应该是一个键,R1 内部应该有两个列表,或者对于 R4,我们应该有三个列表等。 我已经完成了下面的代码,但它忽略了唯一的 ID:

mydictest= mydata.set_index('Id').T.to_dict('list').copy()

所以,我想要的输出应该是这样的:

 {'R1': [['sam', 78],['Sosan',8]], 'R4': [['Jack', 2],['Tom', 76],    
 ['samy', 8]]}

【问题讨论】:

  • 没有听起来简洁的意思,你为什么要这样做?通常应避免进行此类复杂的数据类型操作,而应采用简单整洁的数据形式。
  • 确实,这个dataframe是一个验证集(我用另一个数据集训练了一个模型)所以我想根据key做一个循环,得到结果(TP.TN等)每个键的每一行。然后我可以根据键绘制结果。
  • 提供预期输出

标签: python dataframe dictionary converters


【解决方案1】:

也许你可以试试这样的:

df = pd.DataFrame([['R1', 'sam', 78], ['R2', 'rem', 65], ['R1', 'pem', 56]], columns=['Id', 'Name', 'Score'])
d = df.set_index('Id').to_dict(orient='split')

req_dict = {}
for ind, data in zip(d['index'], d['data']):
    if ind in req_dict:
        req_dict[ind].append(data)
    else:
        req_dict[ind] = [data]
print(req_dict)

输出:

{'R1': [['sam', 78], ['pem', 56]], 'R2': [['rem', 65]]}

【讨论】:

  • 这段代码的输出也和上面我使用的代码类似。它忽略了多个 Id,例如 R1 或 R4。如果所有 Id 都是唯一的,则此代码有效
  • 你希望你的输出是什么样子
  • 我把我想要的输出放在问题中。
  • 是否可以有一个数据框字典?类似于 bove,但不是字典中的列表,我们放置了 datas-frame(对于每个 uniq Ides),其中还包括列的名称。
  • 是的,可以有数据框字典。
猜你喜欢
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 2021-05-21
  • 1970-01-01
相关资源
最近更新 更多