我为我的 设定了三个掩码df,我想过滤掉这些值。
例如,一些随机掩码:
mask1 = df['column1'].isnull()
mask2 = df['column2'] > 5
mask3 = df['column3'].str.contains('hello')
Run Code Online (Sandbox Code Playgroud)
现在我如何组合这些掩码来过滤掉这些值?这是正确的方法吗?同时使用~和|?
masked_df = df[~mask1 | ~mask2 | ~mask3]
Run Code Online (Sandbox Code Playgroud)
我的数据框中有很多行,我无法 100% 确定手动检查是否正确。
jez*_*ael 12
Your solution is nice, but also is posible use bitwise AND and invert chained conditions:
masked_df = df[~(mask1 & mask2 & mask3)]
Run Code Online (Sandbox Code Playgroud)
If masks are in list, solution above is rewritten with np.logical_and.reduce:
masks = [mask1, mask2, mask3]
m = df[~np.logical_and.reduce(masks)]
print (m)
A column1 column2 column3
2 c 4.0 9 hello
3 d 5.0 4 hello
4 e 5.0 2 hello
5 f 4.0 3 hello
Run Code Online (Sandbox Code Playgroud)