如何无需逐个输入列名来按名称选择多列
按名称批量选择多列的实用方法
嘿,完全懂你不想挨个敲列名,也不想依赖索引(毕竟列顺序万一变了就麻烦了)的需求!下面给你几种在Pandas里按名称批量选择多列的实用方法,覆盖不同场景:
当列名有统一前缀/后缀或匹配特定规则时,用
filter()方法
这个方法特别适合列名有规律的情况,比如所有用户相关列都以user_开头,或者日期列都以_date结尾:# 选择所有包含"user_"的列 df.filter(like='user_') # 用正则匹配,选择所有以"_date"结尾的列 df.filter(regex='_date$')列名已提前整理成列表时,直接传入列表选择
如果你已经有了目标列名的列表(不管是手动整理的、从配置文件读的,还是动态生成的),直接用列表索引即可:# 假设你已经有了目标列名列表 target_columns = ['user_id', 'order_amount', 'purchase_date'] df[target_columns] # 动态生成:排除不需要的列,选择剩下的所有列 exclude_columns = ['log_id', 'timestamp'] target_columns = [col for col in df.columns if col not in exclude_columns] df[target_columns]选择包含特定关键词的列,用列表推导式
要是你想选所有包含某个关键词的列,比如所有和价格相关的列,用列表推导式配合in判断就很灵活:# 选择列名中包含"price"的所有列 df[[col for col in df.columns if 'price' in col]]
如果是用其他数据处理工具(比如R的dplyr),也有类似的便捷函数,比如starts_with()、contains(),核心思路都是围绕列名的特征批量筛选,不用逐个手动输入~
内容的提问来源于stack exchange,提问作者KKhosra
相关产品推荐
相关产品推荐

