如何筛选DataFrame中同时包含software和packages的列名?
提取DataFrame中同时含software和packages(含大小写变体)的列名
你原来的代码只实现了单关键词筛选,要同时匹配**software(任意大小写)和package/packages(任意大小写)**的列名,不管两个词的先后顺序,可以用不区分大小写的正则表达式简化写法,同时覆盖两种词序的情况:
# 筛选同时包含software(任意大小写)和package/packages(任意大小写)的列 target_cols = df.filter(regex='(?i)(software.*package|package.*software)').columns
正则说明:
(?i):全局开启不区分大小写模式,不用再枚举Software|software|SOFTWARE这类冗余写法software.*package:匹配列名中先出现software类词汇,之后出现package类词汇的情况(.*表示中间可以有任意字符)package.*software:匹配列名中先出现package类词汇,之后出现software类词汇的情况- 用
|分隔两种顺序,确保不管两个词的先后位置都能被匹配
这个写法可以完美匹配你给出的示例列名:Local Software Packages、Software XYZ Packages、Software Package。
如果需要更严格区分单数/复数,比如只匹配packages(复数),可以把正则里的package改成packages;如果要同时兼容单数和复数,也可以写成package(s)?,不过上面的写法已经能覆盖这两种情况了。
内容的提问来源于stack exchange,提问作者say_n
相关产品推荐
相关产品推荐

