如何过滤包含2个指定子字符串的数据框列名称?

问题描述 投票:0回答:1

我需要数据框中包含术语软件和软件包的列名称。 我能够过滤掉包含一个字符串的列..例如:

software_cols = df.filter(regex='Software|software|SOFTWARE').columns

如何通过提及“包/包/包”来实现相同的目标。

合格的列名称应类似于“本地软件包”、“软件 XYZ 软件包”、“软件包”

pandas regex dataframe
1个回答
0
投票

示例代码

请在您询问时提供示例代码。

import pandas as pd
idx = ['Software', 'Local Software Packages', 'Software XYZ Packages', 'Software Package']
df = pd.DataFrame([1, 2, 3, 4], index=idx).T

df

   Software  Local Software Packages  Software XYZ Packages  Software Package
0         1                        2                      3                 4

代码

filter
两次

pat1 = 'Software|software|SOFTWARE'
pat2 = 'Packages|packages|PACKAGES'
cols = df.filter(regex=pat1).filter(regex=pat2).columns

cols

Index(['Local Software Packages', 'Software XYZ Packages'], dtype='object')

或使用正则表达式

pat = '(?=.*Software|software|SOFTWARE)(?=.*Packages|packages|PACKAGES).*'
cols = df.filter(regex=pat).columns

同样的结果

© www.soinside.com 2019 - 2024. All rights reserved.