简体   繁体   English

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

[英]Joining pandas DataFrame columns together based on column name

I have a pandas Dataframe that looks something like this: 我有一个熊猫数据框,看起来像这样:

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

and I would like to merge all of the columns containing similar names in to the same column. 我想将所有包含相似名称的列合并到同一列中。 So the output would be a DataFrame like this: 因此,输出将是一个像这样的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

What is the most efficient/elegant way to do this? 什么是最有效/最优雅的方法?

Here's one approach, turning your columns into a multi-index and unstacking. 这是一种方法,可以将您的列转换为多索引并进行堆叠。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM