pandas首先堆叠第二列,反之亦然

时间:2017-12-24 05:37:13

标签: python pandas

我有一个包含两列的DataFrame,我想将第二列堆叠在第一列之下,第一列堆叠在第二列之下。

pd.DataFrame({'A':[1,2,3], 'B': [4,5,6]})

   A  B
0  1  4
1  2  5
2  3  6

期望的输出:

   A  B
0  1  4
1  2  5
2  3  6
3  4  1 
4  5  2
5  6  3

到目前为止,我已经尝试过:

pd.concat([df, df[['B','A']].rename(columns={'A':'B', 'B':'A'})])

   A  B
0  1  4
1  2  5
2  3  6
3  4  1
4  5  2
5  6  3

这是最干净的方式吗?

1 个答案:

答案 0 :(得分:5)

如果你问我,康卡特会更好。但如果你有100列重命名是一种痛苦。作为一种通用方法,这里有numpy flipvstack,即

v = df.values
pd.DataFrame(pd.np.vstack((v, pd.np.fliplr(v))), columns=df.columns)

   A  B
0  1  4
1  2  5
2  3  6
3  4  1
4  5  2
5  6  3