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

是否将pandas multiindex作为元组列表返回?

  •  1
  • Soerendip  · 技术社区  · 6 年前

    可以从元组列表中创建多索引。我想知道怎么倒过来?考虑以下多指标:

    MultiIndex(levels=[['N', 'R'], ['N', 'R', 'S'], ['N', 'R', 'S'], ['N', 'R', 'S'], ['N', 'R', 'S'], ['N', 'R', 'S'], ['R', 'S'], ['N', 'R', 'S']],
               labels=[[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 2, 2, 2, 2, 1, 0, 1, 2, 2, 2, 2, 0, 0, 0, 2, 0, 2, 0, 2, 1, 1, 0, 2, 0, 2, 0, 1, 0, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 0, 0, 2, 0, 1, 0, 2, 2, 2, 0, 1, 1, 2, 1, 1, 2, 1, 2, 2, 0, 1, 2, 1, 2, 1, 1, 1], [2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1], [0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 1, 2, 1], [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 1, 1], [1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]],
               names=['AMP', 'CZ', 'FOX', 'CRO', 'MER', 'GM', 'CIP', 'SXT'])
    

    我想返回一个用于进行选择的元组列表 DataFrame.loc[] 例如 [('S', 'S', 'S', 'S', 'S', 'S', 'S, 'S'), ...]

    我会预料到的 df.index.as_tuples() 但不幸的是,这并不存在。

    2 回复  |  直到 6 年前
        1
  •  3
  •   cs95 abhishek58g    6 年前

    要么 df.index.tolist() df.index.values 会的。

        2
  •  0
  •   Soerendip    6 年前

    这可以通过调用该方法来完成。 to_native_types()

    df.index.to_native_types()
    > array([('N', 'N', 'N', 'S', 'N', 'N', 'S', 'N'),
       ('R', 'S', 'N', 'N', 'N', 'S', 'S', 'S'),
       ('R', 'S', 'N', 'S', 'N', 'S', 'S', 'S'),
       ('R', 'S', 'S', 'S', 'N', 'S', 'S', 'S'),
       ('R', 'S', 'S', 'N', 'S', 'S', 'S', 'S'),
       ('R', 'S', 'S', 'S', 'S', 'S', 'S', 'S'),
       ('R', 'S', 'S', 'S', 'S', 'S', 'R', 'S'),
       ('R', 'S', 'R', 'S', 'S', 'S', 'S', 'S'),
       ...], dtype=object)