我有以下数据框:
a b x y 0 1 2 3 -1 1 2 4 6 -2 2 3 6 9 -3 3 4 8 12 -4
如何移动列b和x,使其成为数据帧的最后2列?我想按名称指定b和x,但不指定其他列。
您可以通过指定列的顺序直接重新排列列:
df = df[['a', 'y', 'b', 'x']]
如果列标题是动态的较大数据框,则可以使用列表推导选择不在目标集中的每个列,然后将目标集附加到末尾。
>>> df[[c for c in df if c not in ['b', 'x']] + ['b', 'x']] a y b x 0 1 -1 2 3 1 2 -2 4 6 2 3 -3 6 9 3 4 -4 8 12
为了使其更加安全,可以确保目标列确实在数据框中:
cols_at_end = ['b', 'x'] df = df[[c for c in df if c not in cols_at_end] + [c for c in cols_at_end if c in df]]