【问题标题】:Pandas, read csv file into dictionary熊猫,将 csv 文件读入字典
【发布时间】:2020-12-02 17:20:13
【问题描述】:

有没有一种方法可以读取字典中的 CSV 文件,这样元组中的自定义行是键,其余(元组中)是值?

这是一个示例表:

A |B |C |D |E
--------------
0 |0 |0 |5 |1
0 |1 |0 |2 |8
1 |0 |0 |5 |7
1 |1 |0 |3 |7
0 |0 |1 |9 |0

结果:

dictionary[(A,B,C)] = (D, E)
print(dictionary[(0,0,0)]) # (5,1)

有没有一种有效的方法来实现这一目标?

【问题讨论】:

    标签: python python-3.x pandas csv


    【解决方案1】:

    考虑熊猫数据框df

     A  B  C  D  E
     0  0  0  5  1
     0  1  0  2  8
     1  0  0  5  7
     1  1  0  3  7
     0  0  1  9  0
    

    让我们将zipA, B, CD, E 放在一起,在dict 理解中制作元组的键值对:

    k, v = ['A', 'B', 'C'], ['D', 'E']
    dct = {tuple(x): tuple(y) for x, y in zip(df[k].to_numpy(), df[v].to_numpy())}
    

    结果:

    {(0, 0, 0): (5, 1),
     (0, 1, 0): (2, 8),
     (1, 0, 0): (5, 7),
     (1, 1, 0): (3, 7),
     (0, 0, 1): (9, 0)}
    

    【讨论】:

      【解决方案2】:

      我不确定这是否是最好的解决方案,但它确实有效:

      pd.concat([df[['A', 'B', 'C']].apply(tuple, 1),
                 df[['D', 'E']].apply(tuple, 1)], axis=1)\
        .set_index(0)[1].to_dict()
      #{(0, 0, 0): (5, 1), (0, 1, 0): (2, 8), (1, 0, 0): (5, 7), 
      # (1, 1, 0): (3, 7), (0, 0, 1): (9, 0)}
      

      【讨论】:

      • 它做了它需要做的事情:) 我对美学代码没有任何抱负,谢谢你的回答
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多