import pandas as pd
df = pd.DataFrame({"First":["Bob","John","Peter"], "Name":["Smith-West","Adams","Washington"]})
name = ["Smith", "Santiago"]
filter = True
for n in name:
filter = filter & (~df.Name.str.contains(n))
df[filter]
import pandas as pd
df = pd.DataFrame({"First":["Bob","John","Peter"], "Name":["Smith-West","Adams","Washington"]})
name = ["Smith", "Santiago"]
first = ["Joe", "Peter"]
filter_name = True
for n in name:
filter_name = filter_name & (~df.Name.str.contains(n))
filter_first = True
for f in first:
filter_first = filter_first & (~df.First.str.contains(f))
df[filter_name & filter_first]
2条答案
按热度按时间c7rzv4ha1#
这里有一个命题:您可以创建一个过滤器,以排除一个名称的时间。例如,如果您想排除姓名中包含“Smith”的任何个人,则过滤器可以是
~df["Name"].str.contains("Smith")
。如果列表中有多个名称,则可以使用&
(逻辑与)将它们合并组合起来。下面是一个很短的代码,只是这样做:6yjfywim2#
要回答有关如何使用类似方法但在两列上进行筛选的附加问题,请执行以下操作:
简而言之,我们在
name
上创建第一个过滤器,在first
上创建第二个过滤器。然后我们使用filter_name & filter_first
组合合并。