如何将Pandas DataFrame列按自定义顺序排序 新增列放置末尾
Pandas 按指定优先级调整列顺序解决方案
直接按以下逻辑实现即可,完全匹配需求:
- 第一步:从预设的优先级列清单中,筛选出当前DataFrame实际存在的列,保留原优先级排序
- 第二步:提取当前DataFrame中不在优先级清单内的剩余列,保持原有出现顺序
- 第三步:将两部分列名拼接后,直接给DataFrame重新指定列顺序即可
完整实现代码
import pandas as pd # 预设的预期列优先级顺序 expected_columns = ['cust_id','cost_id','sale_id','prod_id'] # 示例:生成测试用DataFrame df = pd.DataFrame(columns=['customer_name','cust_id','sale_id','sale_time']) # 计算调整后的列顺序 # 1. 筛选存在的优先级列 sorted_priority_cols = [col for col in expected_columns if col in df.columns] # 2. 筛选剩余列 other_cols = [col for col in df.columns if col not in expected_columns] # 3. 重新设置列顺序 df = df[sorted_priority_cols + other_cols]
运行结果验证
调整后df的列顺序为:['cust_id','sale_id','customer_name','sale_time'],完全符合预期要求。
该方案兼容性强,即使后续DataFrame出现新增列、或者缺少部分预期优先级列的情况,都不会报错,自动适配生成符合规则的列顺序。
内容的提问来源于stack exchange,提问作者Kevin Nash
相关产品推荐
相关产品推荐

