如何在DataFrame中反转列序列同时保留列对结构?
按列组反转DataFrame列顺序(保留列对)
假设你的DataFrame列序列为:
['e', 'f', 'c', 'd', 'a', 'b']
需要反转列组的顺序但保留每组内的列对,得到目标序列:
['a', 'b', 'c', 'd', 'e', 'f']
当列名不确定、仅需将最后一组列对移到最前时,可以通过按列分组后反转组顺序的方式实现,无需依赖具体列名:
方法一:纯Python列表操作
# 获取当前列列表 cols = df.columns.tolist() # 按每2个元素为一组拆分 col_groups = [cols[i:i+2] for i in range(0, len(cols), 2)] # 反转组的顺序,再展开为一维列表 new_col_order = [col for group in reversed(col_groups) for col in group] # 重新排列DataFrame的列 df = df[new_col_order]
方法二:用Numpy简化操作
如果习惯用Numpy,代码可以更简洁:
import numpy as np cols = df.columns # 重塑为二维数组(每行一组列对),反转行顺序后再展平 new_col_order = cols.reshape(-1, 2)[::-1].flatten().tolist() df = df[new_col_order]
这两种方法都不依赖具体列名,只要列是两两成对的结构,就能自动将最后一组移到最前,同时保留每组内的列顺序。
内容的提问来源于stack exchange,提问作者Digital Farmer
相关产品推荐
相关产品推荐

