基于列拆分比较数据框

时间:2021-04-05 18:45:31

标签: python pandas dataframe

我有一个连接的数据框,列为 b、c、d,索引值为 0、1、2、0、1、2。 索引值重复,因为它是串联的。

         b     c    d
   0     x     bh   sj
   1     y     ss   as
   2     z     ws   ad
   0     x     sf   ak
   1     y     ks   kq
   2     z     sl   la

我希望它是这样的。我正在尝试比较这些值及其一个大数据集。 我已经尝试了很多,但无法以这种方式拆分数据帧。有人可以帮我吗?

  
         b     c    d      e     f  
   0     x     bh   sj     sf    ak     
   1     y     ss   as     ks    kq
   2     z     ws   ad     sl    la

这是创建数据框的代码

cols1 = ['b', 'c', 'd']
df1 = pd.DataFrame(data=[['x','bh','sj'],['y','ss','as'],['z','ws','ad'],['x','sf','ak'],['y','ks','kq'],['z','sl','la']], columns=cols1,  index=['0','1','2','0','1','2'])
df1.head()

1 个答案:

答案 0 :(得分:0)

你可以这样做:

In [1414]: g = df1.groupby(df1.index).cumcount().add(1)
In [1419]: df = df1.set_index(['b', g]).unstack(fill_value=0).sort_index(axis=1, level=1)

In [1422]: df.columns = ["{}{}".format(a, b) for a, b in df.columns]
In [1424]: df = df.reset_index()

In [1425]: df
Out[1425]: 
   b  c1  d1  c2  d2
0  x  bh  sj  sf  ak
1  y  ss  as  ks  kq
2  z  ws  ad  sl  la