如何根据列名前缀快速获取Pandas子DataFrame?
Pandas按列名前缀筛选生成子DataFrame
针对你需要保留以Q1和Q3开头的列生成子DataFrame的需求,以下是几种简便的实现方法:
方法1:使用filter()结合正则表达式
filter()方法支持通过正则表达式匹配列名,是最简洁的方式之一:
new_df = df.filter(regex='^Q1|^Q3')
^Q1表示匹配以Q1开头的列名,^Q3表示匹配以Q3开头的列名|作为正则中的逻辑或,同时筛选两类列
方法2:利用列名的str.startswith()方法
通过布尔索引筛选符合条件的列名:
# 先获取符合前缀要求的列名 target_cols = df.columns[df.columns.str.startswith('Q1') | df.columns.str.startswith('Q3')] # 生成子DataFrame new_df = df[target_cols]
方法3:列表推导式遍历列名
手动遍历列名并筛选:
target_cols = [col for col in df.columns if col.startswith('Q1') or col.startswith('Q3')] new_df = df[target_cols]
以上三种方法都能高效生成你需要的子DataFrame,无需手动罗列所有列名,尤其适合列数较多的场景。
内容的提问来源于stack exchange,提问作者Khaled DELLAL
相关产品推荐
相关产品推荐

