代码之家  ›  专栏  ›  技术社区  ›  Nikko

将两列设置为Pandas中的元组索引

  •  3
  • Nikko  · 技术社区  · 6 年前

    假设我有一个包含列0、1和“未来连接”的熊猫数据帧。如何将列0和1设置为一个元组索引:

    例如,此数据帧:

    0   1        Future Connection
    6   840      0.0
    4   197      1.0
    620 979      0.0
    

    将导致:

    0           Future Connection
    (6, 840)    0.0
    (4, 197)    1.0
    (620, 979)  0.0
    
    2 回复  |  直到 6 年前
        1
  •  5
  •   jpp    6 年前

    如何将列0和1设置为一个元组索引:

    object 包含元组的数据类型索引,但不建议这样做。最好的选择是使用 MultiIndex ,它通过NumPy数组高效地存储基础值。事实上,大熊猫用自己的方式促进了这一点 set_index

    df = df.set_index([0, 1])
    
    print(df)
    #          Future Connection
    # 0   1                     
    # 6   840                0.0
    # 4   197                1.0
    # 620 979                0.0
    
    print(df.index)
    # MultiIndex(levels=[[4, 6, 620], [197, 840, 979]],
    #            labels=[[1, 0, 2], [1, 0, 2]],
    #            names=[0, 1])
    
    print(df.index.values)
    # [(6, 840) (4, 197) (620, 979)]
    
        2
  •  3
  •   jezrael    6 年前

    DataFrame.pop 用于提取柱 0, 1 :

    print (df.columns)
    Index([0, 1, 'Future Connection'], dtype='object')
    
    df.index = [x for x in zip(df.pop(0), df.pop(1))]
    print (df)
                Future Connection
    (6, 840)                  0.0
    (4, 197)                  1.0
    (620, 979)                0.0