如何根据指定前缀列表调整pandas DataFrame的列顺序
实现方法
按给定前缀列表匹配对应列、拼接成新的列序后重赋值即可,示例代码如下:
import pandas as pd # 替换为你自己的前缀顺序,不要用list做变量名避免和Python内置关键字冲突 prefix_order = ['nOffered', 'tacw', 'tacd', 'nTransferred', 'tHeld'] # 按前缀顺序生成新列名列表 sorted_columns = [] for prefix in prefix_order: # 匹配所有以当前前缀开头的列,同前缀下保留原有的后缀顺序 matched = [col for col in df.columns if col.startswith(prefix)] sorted_columns.extend(matched) # 应用新的列顺序 df = df.reindex(columns=sorted_columns)
如果需要强制同前缀下的后缀顺序(比如固定_count在前、_sum在后),可以用以下写法:
prefix_order = ['nOffered', 'tacw', 'tacd', 'nTransferred', 'tHeld'] suffix_order = ['count', 'sum'] sorted_columns = [f"{pre}_{suf}" for pre in prefix_order for suf in suffix_order] df = df.reindex(columns=sorted_columns)
用你提供的示例列测试,最终输出的列顺序和要求完全一致。
内容的提问来源于stack exchange,提问作者Shivika
相关产品推荐
相关产品推荐

