我需要数据框中包含术语软件和软件包的列名称。 我能够过滤掉包含一个字符串的列..例如:
software_cols = df.filter(regex='Software|software|SOFTWARE').columns
如何通过提及“包/包/包”来实现相同的目标。
合格的列名称应类似于“本地软件包”、“软件 XYZ 软件包”、“软件包”
示例代码
请在您询问时提供示例代码。
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
同样的结果