重置pandas中多级列的索引,以便更高的索引更低的索引

时间:2015-11-12 04:31:44

标签: python pandas

我有一个像:

df   a       b
     c   d   e  f 
1    .   .   .  .
2    .   .   .  .
3    .   .   .  .
4    .   .   .  .

并希望将其作为结果:

 df  
       ac   ad  be  bf 
    1    .   .   .  .
    2    .   .   .  .
    3    .   .   .  .
    4    .   .   .  .

2 个答案:

答案 0 :(得分:4)

您可以在列级别上使用地图和zip / join:

In [11]: df
Out[11]:
   a     b
   c  d  e  f
1  .  .  .  .
2  .  .  .  .
3  .  .  .  .
4  .  .  .  .

In [12]: df.columns.map(lambda x: "".join(*zip(*x)))
Out[12]: array(['ac', 'ad', 'be', 'bf'], dtype=object)

In [13]: df.columns = df.columns.map(lambda x: "".join(*zip(*x)))

In [14]: df
Out[14]:
  ac ad be bf
1  .  .  .  .
2  .  .  .  .
3  .  .  .  .
4  .  .  .  .

答案 1 :(得分:4)

df.columns.map("".join)就足够了,如下:

In [12]: df
Out[12]: 
   A        B      
   C  D  E  F  G  H
0  0  1  2  3  4  5
1  0  1  2  3  4  5
2  0  1  2  3  4  5
3  0  1  2  3  4  5
4  0  1  2  3  4  5
5  0  1  2  3  4  5

In [13]: df.columns = df.columns.map("".join)

In [14]: df
Out[14]: 
   AC  AD  AE  BF  BG  BH
0   0   1   2   3   4   5
1   0   1   2   3   4   5
2   0   1   2   3   4   5
3   0   1   2   3   4   5
4   0   1   2   3   4   5
5   0   1   2   3   4   5