我有一个数据帧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]
答案 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