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

如何在pandas[duplicate]中将重复的索引值转换为新列

  •  1
  • bismo  · 技术社区  · 4 年前

    我有一个 df :

      x
    0 a
    1 b
    2 c
    0 a
    1 b
    2 c
    0 a
    1 b
    2 c
    

    如何将这些重复的索引值转换为新行?期望输出:

      x  y  z
    0 a  a  a
    1 b  b  b
    2 c  c  c
    

    append ,但它只是通过添加行而不是列来不断地给我这个输出。我试过了 join 但这也不管用,所以我想一定有一种方法可以将这些重新创建的索引值转换为新的列。

    2 回复  |  直到 4 年前
        1
  •  1
  •   Andrej Kesely    4 年前
    print(df.groupby(level=0).agg(list)["x"].apply(pd.Series))
    

       0  1  2
    0  a  a  a
    1  b  b  b
    2  c  c  c
    

    要重命名列:

    print(
        df.groupby(level=0)
        .agg(list)["x"]
        .apply(pd.Series)
        .rename(columns={0: "x", 1: "y", 2: "z"})
    )
    

       x  y  z
    0  a  a  a
    1  b  b  b
    2  c  c  c
    
        2
  •  1
  •   Nk03    4 年前
    #change column name as required.
    new_df = pd.DataFrame(df.groupby(df.index).values.apply(list).to_list())