有可能应用这种数据帧变换吗?

时间:2017-12-04 22:20:35

标签: pandas dataframe transform

转动此数据框:

  Name  │  car
  ──────┼────────      
  John  │  Volvo      
  John  │  Fiat      
  Paul  │  Dacia     

进入这个? :

  Name  │  car_1  │   car_2  
  ──────┼─────────┼─────────
  John  │  Volvo  │   Fiat    
  Paul  │  Dacia  │   NaN    

表示第一个表中任意数量的副本(一个人的任意车辆数)ID。

2 个答案:

答案 0 :(得分:2)

使用unstack

df1=df1.assign(numer=df1.groupby('Name').cumcount()).set_index(['Name','numer']).unstack()
df1
Out[256]: 
         car      
numer      0     1
Name              
John   Volvo  Fiat
Paul   Dacia  None

df1.columns=df1.columns.map('{0[0]}_{0[1]}'.format)
df1
Out[261]: 
       car_0  car_1
Name             
John  Volvo  Fiat
Paul  Dacia  None

答案 1 :(得分:2)

In [190]: (df.assign(x=df.groupby('Name').cumcount()+1)
     ...:    .pivot(index='Name', columns='x', values='car')
     ...:    .add_prefix('car_')
     ...:    .reset_index()
     ...:    .rename_axis(None,1))
     ...:
Out[190]:
   Name  car_1 car_2
0  John  Volvo  Fiat
1  Paul  Dacia  None