我为数据框创建了多个过滤器:
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)]
或者concat
与 DataFrame.all
用于测试每行的所有 True
:
df[pd.concat(filterlist, axis=1).all(axis=1)]
如果可能,请使用|
作为正则表达式或
:
filt = ~df["message"].str.contains("<Media omitted>|http://|Dropped pin", na=False)
关于python - Pandas - 创建多个过滤器并应用于数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63560043/