我想将数据框的行附加为列

时间:2019-03-25 02:46:32

标签: python pandas dataframe rows col

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

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

任何帮助将不胜感激,如果上面的表没有正确地隔开

2 个答案:

答案 0 :(得分:2)

更像是pivot创建密钥后的cumcount问题---我在这里使用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

答案 1 :(得分: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