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

2024-04-25 18:18:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

如有任何帮助,将不胜感激,对不起,如果上述表格没有适当的间隔


Tags: 数据name间隔nan表格x2z3x3
2条回答

更像是由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

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

相关问题 更多 >