如何将2个pandas列连接在不同的位置?

问题描述 投票:0回答:2

我有一个像这样的数据帧:

DF1:

col_1, col_2
a,1
b,2    
c,3
d,4

我想用两列交换位置连续df1两次,这样我就有:

col_a, col_b
a,1
b,2
c,3
d,4
1,a
2,b
3,c
4,d

我试过了:

df2 = pd.DataFrame(columns=['col_a','col_b'])
df2[['col_a','col_b']] = pd.concat([df1[['col_1','col_2]],df1[['col_2','col_1']]])

但是,这只是将数据帧与自身相连,结果是:

col_a, col_b
a,1
b,2
c,3
d,4
a,1
b,2
c,3
d,4

这样做的正确方法是什么?

python pandas
2个回答
2
投票

使用concat

x = pd.DataFrame(df.iloc[:, [1,0]].values, columns=df.columns)
pd.concat([df, x], sort=False)

    col_1   col_2
0   a       1
1   b       2
2   c       3
3   d       4
0   1       a
1   2       b
2   3       c
3   4       d

0
投票

来自numpy

pd.DataFrame(np.vstack([df.values,df.values[:,::-1]]),columns=df.columns)
Out[850]: 
  col_1 col_2
0     a     1
1     b     2
2     c     3
3     d     4
4     1     a
5     2     b
6     3     c
7     4     d