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

将熊猫数据帧列转换为行

  •  0
  • muazfaiz  · 技术社区  · 7 年前

    我有下面的dict,我把它转换成了dataframe

    players_info='afghanistan':'asghar stanikzai':809.0,
    “穆罕默德·纳比”:851.0,
    “穆罕默德·沙扎德”:1713.0,
    “Najibullah Zadran”:643.0,
    “Samiullah Shenwari”:774.0,
    “澳大利亚”:“AJ Finch”:1082.0,
    “cl白色”:988.0,
    《达华纳》:1691.0,
    “GJ麦克斯韦”:822.0,
    'sr watson':1465.0,
    “England”:“Ad Hales”:1340.0,
    “EJG摩根”:1577.0,
    “JC巴特勒”:985.0,
    “KP彼得森”:1176.0,
    “LJ赖特”:759.0
    
    pd.数据帧(玩家信息)
    

    结果输出为

    但是我希望列被映射成如下行

    玩家团队得分
    阿富汗穆罕默德·纳比851.0
    阿富汗穆罕默德·沙赫扎德1713.0
    阿富汗纳吉布拉扎德兰643.0
    

    enter image description here

    Player            Team           Score
    Mohammad Nabi     Afghanistan    851.0
    Mohammad Shahzad  Afghanistan   1713.0  
    Najibullah Zadran Afghanistan    643.0  
    JC Buttler        England        985.0
    KP Pietersen      England       1176.0
    LJ Wright         England        759.0
    

    reset_index

    2 回复  |  直到 7 年前
        1
  •  3
  •   harvpan    7 年前

    df = df.stack().reset_index()
    df.columns=['Player', 'Team', 'Score']
    

    df.head(5)

          Player    Team    Score
    0   AD Hales    Score   1340.0
    1   AJ Finch    Team    1082.0
    2   Asghar Stanikzai    Player  809.0
    3   CL White    Team    988.0
    4   DA Warner   Team    1691.0
    
        2
  •  2
  •   cs95 abhishek58g    7 年前

    melt

    df.rename_axis('Player').reset_index().melt('Player').dropna()
    
                    Player     variable   value
    2     Asghar Stanikzai  Afghanistan   809.0
    10       Mohammad Nabi  Afghanistan   851.0
    11    Mohammad Shahzad  Afghanistan  1713.0
    12   Najibullah Zadran  Afghanistan   643.0
    14  Samiullah Shenwari  Afghanistan   774.0
    16            AJ Finch    Australia  1082.0
    18            CL White    Australia   988.0
    19           DA Warner    Australia  1691.0
    21          GJ Maxwell    Australia   822.0
    28           SR Watson    Australia  1465.0
    30            AD Hales      England  1340.0
    35          EJG Morgan      England  1577.0
    37          JC Buttler      England   985.0
    38        KP Pietersen      England  1176.0
    39           LJ Wright      England   759.0