IIUC,你其实想要的
>>> df[((df[cols] > 0) | df[cols].isnull()).all(axis=1)] a b c d 2 4 5 41 14 3 3 NaN 1 NaN
现在你得到"如果他们都是积极的"或"任何都是空的".你想要"如果他们都是(正面或空的)".(替换> 0
用>=0
的非负).
由于NaN不是正面的,我们可以通过翻转条件来简化,并使用类似的东西
>>> df[~(df[cols] <= 0).any(axis=1)] a b c d 2 4 5 41 14 3 3 NaN 1 NaN