如何根据数据类型(dtype)对Pandas DataFrame列重新排序?
Pandas DataFrame列按类型重新排列的简便方法
核心方案
通过筛选列类型,将数值型(Int64/float64等)列集中放在前面,object类型列放在后面,无需手动逐个列名排序,适合大量列的场景。
基础实现代码
假设你的DataFrame名为df:
# 提取所有数值类型列(可根据实际类型调整include参数) numeric_cols = df.select_dtypes(include=['Int64', 'float64']).columns.tolist() # 提取所有object类型列 object_cols = df.select_dtypes(include=['object']).columns.tolist() # 合并新的列顺序并重新排列DataFrame df = df[numeric_cols + object_cols]
自定义数值列内部顺序(如示例需求)
如果需要像示例中那样指定部分数值列的先后顺序,可在基础方案上调整:
# 自定义需要优先排列的数值列顺序 priority_numeric_cols = ['Age', 'BMI', 'Weight'] # 筛选DataFrame中存在的目标列,避免报错 priority_numeric_cols = [col for col in priority_numeric_cols if col in df.columns] # 提取剩余的数值列,保留原有相对顺序 remaining_numeric_cols = [col for col in df.select_dtypes(include=['Int64']).columns if col not in priority_numeric_cols] # 合并最终列顺序:优先列 + 剩余数值列 + object列 new_col_order = priority_numeric_cols + remaining_numeric_cols + object_cols df = df[new_col_order]
说明
select_dtypes方法可以快速筛选指定类型的列,支持同时传入多种类型(如include=['int64', 'float64', 'Int64'])- 上述代码无需手动罗列100+列名,自动按类型归类,同时支持自定义核心列的顺序
内容的提问来源于stack exchange,提问作者Maya
相关产品推荐
相关产品推荐

