Pandas-创建多个过滤器并应用于数据帧



我为Dataframe创建了多个过滤器:

filt1 = ~df["message"].str.contains("<Media omitted>", na=False),
filt2 = ~df["message"].str.contains("http://", na=False),
filt3 = ~df["message"].str.contains("Dropped pin", na=False), 

我可以使用过滤数据帧

df[filt1 & filt2 & filt3]

但随着我添加更多的过滤器,这似乎是一种愚蠢的过滤方式。如何将多个筛选器应用于一个数据帧?

我尝试将每个过滤器添加到执行df[filterlist]df[*filterlist]的列表中,但这些都不起作用。

您可以使用np.logical_and.reduce:

filterlist = [filt1, filt2, filt3]
df[np.logical_and.reduce(filterlist)]

concatDataFrame.all用于测试每行所有True

df[pd.concat(filterlist, axis=1).all(axis=1)]

如果可能,将|用于正则表达式or:

filt = ~df["message"].str.contains("<Media omitted>|http://|Dropped pin", na=False)

您可以使用join为正则表达式合并列表

df[~df.message.str.contains('|'.join(filterlist))]

最新更新