Python Pandas调整列顺序:将最后一列移至数据框中间
如何将DataFrame最后一列移至中间位置
我懂你的痛点啦——你已经能取出前7列和最后一列,但不知道怎么把剩下的列也整合进来。其实只需要把列索引拆成三部分再拼接就行,咱们一步步解决:
针对你的示例场景
你的示例有15列,要把col15放到col7后面。咱们可以把列位置分成三部分:
- 前7列:
range(7)→ 对应col1到col7 - 最后一列:
[-1]→ 对应col15 - 中间剩余列:
range(7, len(df.columns)-1)→ 对应col8到col14(这里len(df.columns)-1是倒数第二列的索引,刚好排除最后一列)
把这三部分拼起来传给iloc,就能得到想要的列顺序:
# 拆分列索引 first_seven = list(range(7)) last_col = [-1] middle_rest = list(range(7, len(df.columns)-1)) # 拼接成新的列顺序 new_order = first_seven + last_col + middle_rest # 重新排列DataFrame df_reordered = df.iloc[:, new_order]
运行后,df_reordered的列顺序就完全符合你的期望:col1 col2 col3 col4 col5 col6 col7 col15 col8 col9 col10 col11 col12 col13 col14
通用版(适配任意列数和插入位置)
如果你的DataFrame不是15列,或者想把最后一列放到其他位置(比如第k列之后),可以用这个通用写法:
# 定义要插入最后一列的位置:放到第k列之后,这里k=7 insert_after = 7 # 拆分索引 first_part = list(range(insert_after)) last_col = [-1] middle_part = list(range(insert_after, len(df.columns)-1)) # 拼接并重新排列 new_order = first_part + last_col + middle_part df_reordered = df.iloc[:, new_order]
另一种更直观的方式(用列名操作)
要是你觉得索引计算麻烦,直接操作列名更清晰:
# 把所有列名转成列表 col_names = df.columns.tolist() # 取出最后一列的名字并从列表移除 last_col_name = col_names.pop() # 在指定位置插入最后一列的名字(索引7的位置,就是第7列后面) col_names.insert(7, last_col_name) # 重新排列列 df_reordered = df[col_names]
这种方式不用算索引,直接对着列名操作,新手也能快速上手~
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

