根据列名将pandas DataFrame列连接在一起

时间:2014-06-05 13:59:00

标签: python merge pandas append dataframe

我有一个看起来像这样的pandas Dataframe:

df
A.1  B.1  C.1  A.2  B.2  C.2  A.3  B.3  C.3
1    a    m    4    d    p    7    g    s
2    b    n    5    e    q    8    h    t
3    c    o    6    f    r    9    i    u

我希望将包含相似名称的所有列合并到同一列中。 所以输出将是这样的DataFrame:

df
A  B  C  
1  a  m
2  b  n
3  c  o
4  d  p
5  e  q
6  f  r
7  g  s
8  h  t
9  i  u

最有效/优雅的方法是什么?

1 个答案:

答案 0 :(得分:1)

这是一种方法,将您的列转换为多索引和取消堆栈。

In [220]: mult_index = [tuple(x.split('.')) for x in df.columns]
In [221]: df.columns = pd.MultiIndex.from_tuples(mult_index)

In [222]: df.stack()
Out[222]: 
     A  B  C
0 1  1  a  m
  2  4  d  p
  3  7  g  s
1 1  2  b  n
  2  5  e  q
  3  8  h  t
2 1  3  c  o
  2  6  f  r
  3  9  i  u