我有一个带有多个列的pandas数据框,我想根据列名但使用两个不同的条件来过滤该数据框。我尝试给我们指定了项目和正则表达式的df.filter,但这是不允许的。
如果列名是“用户名”,“ XYZ 1001”,“ XYZ 1002”,“ XYY 1001”,“ XYY 1002”,“ XZZ 1001”和“ XZZ 1002”。我希望能够过滤数据框以仅包括列名称等于“用户名”或包含子字符串XYZ的列。
答案 0 :(得分:1)
将DataFrame.filter
与regex参数和regex一起使用:
c = ["User name", "XYZ 1001", "XYZ 1002", "XYY 1001", "XYY 1002", "XZZ 1001"]
df = pd.DataFrame(columns=c)
print (df)
Empty DataFrame
Columns: [User name, XYZ 1001, XYZ 1002, XYY 1001, XYY 1002, XZZ 1001]
Index: []
df = df.filter(regex='User name|XYZ')
print (df)
Empty DataFrame
Columns: [User name, XYZ 1001, XYZ 1002]
Index: []
如果需要完全匹配User name
,并在字符串名称的开头指定^
,在列名的结尾指定$
:
df = df.filter(regex='^User name$|XYZ')