Pandas如何筛选DataFrame中列名以carr开头的列
Pandas筛选列名以指定字符串开头的列
问题场景
假设有一个包含多列的数据集,部分列名以carr开头,原始数据集结构如下:
| carr | carrer | banana |
|---|---|---|
| One | Two | Three |
需要筛选后仅保留列名以字符串carr开头的列,预期输出结果如下:
| carr | carrer |
|---|---|
| One | Two |
测试用示例DataFrame构造代码:
import pandas as pd df = pd.DataFrame({ "Carrer":[1,2,3], "Carr":[2,3,1], "Banana":[1,5,7] })
实现方法
方法1:pandas内置字符串方法(推荐)
直接调用列索引的字符串匹配方法,代码简洁执行效率高。
如果需要严格区分大小写(仅匹配小写carr开头的列):
filtered_df = df.loc[:, df.columns.str.startswith("carr")]
如果需要不区分大小写匹配(比如测试用例里首字母大写的Carr/Carrer也能被匹配到),先把列名统一转小写再判断即可:
filtered_df = df.loc[:, df.columns.str.lower().str.startswith("carr")]
方法2:列表推导筛选列名(新手友好)
逻辑更直观,先遍历所有列名挑出符合条件的,再直接取对应列,不用记loc的切片规则:
# 要做严格大小写匹配就去掉.lower()即可 match_cols = [col for col in df.columns if col.lower().startswith("carr")] filtered_df = df[match_cols]
两种方法跑测试用例,最终返回的DataFrame都会只保留Carr、Carrer两列,完全符合预期。
内容的提问来源于stack exchange,提问作者INGl0R1AM0R1
相关产品推荐
相关产品推荐

