根据多个条件按列名过滤数据框

时间:2020-04-15 11:58:14

标签: python-3.x pandas

我有一个带有多个列的pandas数据框,我想根据列名但使用两个不同的条件来过滤该数据框。我尝试给我们指定了项目和正则表达式的df.filter,但这是不允许的。

如果列名是“用户名”,“ XYZ 1001”,“ XYZ 1002”,“ XYY 1001”,“ XYY 1002”,“ XZZ 1001”和“ XZZ 1002”。我希望能够过滤数据框以仅包括列名称等于“用户名”或包含子字符串XYZ的列。

1 个答案:

答案 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')