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

Imr*_*ran 2 python pandas

我有一个有两列的DataFrame,我希望将第二列堆叠在第一列下面,第一列放在第二列下面.

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

   A  B
0  1  4
1  2  5
2  3  6
Run Code Online (Sandbox Code Playgroud)

期望的输出:

   A  B
0  1  4
1  2  5
2  3  6
3  4  1 
4  5  2
5  6  3
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试过:

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
Run Code Online (Sandbox Code Playgroud)

这是最干净的方式吗?

Flo*_*oor 5

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

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
Run Code Online (Sandbox Code Playgroud)