python pandas将几列移动到开头而不提及其他列

时间:2018-03-16 17:38:13

标签: python-3.x pandas multiple-columns

我的问题类似于this question。在这个问题的答案中,我看到了几种方法可以做我在下面尝试做的事情。但答案是陈旧的,我觉得可能有一种快速而有效的方式来做我想要的。

import pandas as pd

df =pd.DataFrame({'a':[1,2,3,4],'b':[2,4,6,8]})
df['x']=df.a + df.b
df['y']=df.a - df.b
df
   a  b   x  y
0  1  2   3 -1
1  2  4   6 -2
2  3  6   9 -3
3  4  8  12 -4

现在我想将x和y列移动到开头。我总是可以在下面做。

df = df[['x','y','a','b']]
df
    x  y  a  b
0   3 -1  1  2
1   6 -2  2  4
2   9 -3  3  6
3  12 -4  4  8

但我不想要那个解决方案。我想要一个有效的解决方案,将列x和y移动到开始而不提及其他列的名称,因为我的数据帧将要更改,我可能不知道所有列的名称

2 个答案:

答案 0 :(得分:0)

您可以使用insert

df.insert(loc=0, column='x', value=df.a + df.b)
df.insert(loc=1, column='y', value=df.a - df.b)
df
Out[325]: 
    x  y  a  b
0   3 -1  1  2
1   6 -2  2  4
2   9 -3  3  6
3  12 -4  4  8

答案 1 :(得分:0)

import pandas as pd

df =pd.DataFrame({'a':[1,2,3,4],'b':[2,4,6,8]})

a = list(df.columns)

df['x']=df.a + df.b

df['y']=df.a - df.b

b = list(df.columns)

diff = list(set(b) - set(a))

df[diff+a]
df

 y   x  a  b
-1   3  1  2
-2   6  2  4
-3   9  3  6
-4  12  4  8