将多列pandas数据帧组合到一列

时间:2017-09-12 09:41:41

标签: python-3.x pandas dataframe

我有一个数据帧df如下所示,它的列数随时间而变化:

  Column 1     Column 2   
0        A        E  
1        B        F  
2        C        G  
3        D        H  

我需要将列组合成一个,使其看起来如下所示:

        column 3  
0         A,E  
1         B,F  
2         C,G  
3         D,H  

对于要合并为一行的行,以下是代码。我需要一些不会指定列名的东西。

df = df.stack().to_frame().T  
df.columns = ['{}_{}'.format(*c) for c in df.columns] 

2 个答案:

答案 0 :(得分:3)

In [52]: df.Column1 += ',' + df.pop('Column2')

In [53]: df
Out[53]:
  Column1
0     A,E
1     B,F
2     C,G
3     D,H

In [56]: df['Column3'] = df.pop('Column1') + ',' + df.pop('Column2')

In [57]: df
Out[57]:
  Column3
0     A,E
1     B,F
2     C,G
3     D,H

<强>更新

In [77]: df
Out[77]:
  Column1 Column2 Column3
0       A       E       I
1       B       F       J
2       C       G       K
3       D       H       L

In [78]: res = pd.DataFrame({'ColX': df.add(',').sum(axis=1).str.rstrip(',')}, df.index)

In [79]: res
Out[79]:
    ColX
0  A,E,I
1  B,F,J
2  C,G,K
3  D,H,L

答案 1 :(得分:1)

这是一个.join -

pd.DataFrame({'Out':[",".join(i) for i in df.values]})

示例运行 -

In [375]: df
Out[375]: 
  Column1 Column2 Column3
0       A       E       I
1       B       F       J
2       C       G       K
3       D       H       L

In [376]: pd.DataFrame({'Out':[",".join(i) for i in df.values]})
Out[376]: 
     Out
0  A,E,I
1  B,F,J
2  C,G,K
3  D,H,L