【问题标题】:I want to append the rows of a dataframe as columns我想将数据框的行附加为列
【发布时间】:2019-08-15 06:31:53
【问题描述】:

我有几个小的数据框,例如:

name   x   y  z
A      1   2  3
A      1   23  4
A      3    5   6
B       0    2  3

我想附加所有的“A”以便我得到这个数据框

name    x    y   z   x2   y2 z2    x3   y3   z3
A         1   2  3    1    23 4    3    5     6
B         0  2  3    NaN-------------------> NaN

任何帮助将不胜感激,如果上述表格的间距不正确,我们深表歉意

【问题讨论】:

    标签: python pandas dataframe rows col


    【解决方案1】:

    cumcount创建密钥后更像pivot问题---我在这里使用unstack

    df['Newkey']=df.groupby('name').cumcount()+1
    yourdf=df.set_index(['name','Newkey']).unstack().sort_index(level=1,axis=1)
    yourdf.columns=yourdf.columns.map('{0[0]}{0[1]}'.format)
    yourdf
    Out[20]: 
           x1   y1   z1   x2    y2   z2   x3   y3   z3
    name                                              
    A     1.0  2.0  3.0  1.0  23.0  4.0  3.0  5.0  6.0
    B     0.0  2.0  3.0  NaN   NaN  NaN  NaN  NaN  NaN
    

    【讨论】:

      【解决方案2】:

      pivot_table 与其他一些功能一起使用:

      df['idx'] = df.groupby('name').cumcount()+1
      df = df.pivot_table(index='name', columns='idx', values=['x', 'y', 'z'], aggfunc='first')
      df = df.sort_index(axis=1, level=1)
      df.columns = [f'{x}_{y}' for x,y in df.columns]
      df = df.reset_index()
      

      现在:

      print(df)
      

      转载:

        name  x_1  y_1  z_1  x_2   y_2  z_2  x_3  y_3  z_3
      0    A  1.0  2.0  3.0  1.0  23.0  4.0  3.0  5.0  6.0
      1    B  0.0  2.0  3.0  NaN   NaN  NaN  NaN  NaN  NaN
      

      【讨论】:

        猜你喜欢
        • 2019-04-29
        • 2021-10-26
        • 2021-06-06
        • 1970-01-01
        • 2019-01-22
        • 1970-01-01
        • 2020-07-14
        • 2019-04-29
        • 2021-02-06
        相关资源
        最近更新 更多