pandas如何筛选包含指定字符串的列名并生成列表
最优实现方案
两种常用的高效实现方式,优先推荐列表推导式,性能最优且写法简洁:
- 方案1:列表推导式(性能最优,无需调用pandas额外方法)
collist = [col for col in df.columns if '_main' in col]
这种写法时间复杂度为O(n)(n为列数),不需要做额外的类型转换,是所有方案里开销最低的,绝大多数场景下优先选择。
- 方案2:pandas内置字符串匹配方法(适合后续还要做列过滤等链式操作的场景)
collist = df.columns[df.columns.str.contains('_main')].tolist()
如果之后还要直接基于匹配结果筛选df数据,可以直接链式写df.filter(like='_main')一步得到筛选后的子df,不需要先存列名列表:
# 直接得到只含_main列的子DataFrame df_main = df.filter(like='_main')
内容的提问来源于stack exchange,提问作者SOK
相关产品推荐
相关产品推荐

