我的问题类似于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移动到开始而不提及其他列的名称,因为我的数据帧将要更改,我可能不知道所有列的名称
答案 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