将数据框列移动到最后一列

Nat*_*sha 2 shift dataframe python-3.x pandas

我想将数据框中的列移动到最后一列,我尝试使用shift. 但这并没有改变立场。

import pandas a pd
df = #input dataframe
df['x'] = df['x'].shift(axis=1)
Run Code Online (Sandbox Code Playgroud)
Error:
    raise ValueError(f"No axis named {axis} for object type {cls.__name__}")
ValueError: No axis named 1 for object type Series
Run Code Online (Sandbox Code Playgroud)

还有其他选择吗?有人可以建议吗?

moz*_*way 5

您可以pop再次插入:

df['X'] = df.pop('X')
Run Code Online (Sandbox Code Playgroud)

例子:

df = pd.DataFrame([list('axbc')], columns=['A', 'X', 'B', 'C'])
print(df)

   A  X  B  C
0  a  x  b  c


df['X'] = df.pop('X')
print(df)

   A  B  C  X
0  a  b  c  x
Run Code Online (Sandbox Code Playgroud)

另一个更通用的选项是重新索引,为此您可以删除最后从索引中移动的列并将它们添加到最后。优点是您可以一次处理多个列并选择更多列到不同的位置:

to_move = ['X']
new = df.columns.difference(to_move).to_list()+to_move
# ['A', 'B', 'C', 'X']

df = df[new]
Run Code Online (Sandbox Code Playgroud)