从数据框中排除行,除非满足其他列条件

Des*_*key 3 python logic pandas

如果行符合列表(eligibility_criteria)条件,我想从数据框中排除行,除非价目表列以“ ***”开头。这就是我所拥有的:

import pandas as pd

df = df[~df['eligibility'].str.contains(eligibility_criteria, na=False)] #This works
Run Code Online (Sandbox Code Playgroud)

如何添加此“ except when”限定词...

#df['tariff'].str.startswith("***")
Run Code Online (Sandbox Code Playgroud)

DYZ*_*DYZ 5

E有资格标准,S如果关税开头是真实的"***"。您要排除E unless S与相同的行E & ~S。相反,您要保留不具有此属性的行:~(E & ~S),与以下属性相同~E | S

df = df[~df['eligibility'].str.contains(eligibility_criteria, na=False) | 
         df['tariff'].str.startswith("***")]
Run Code Online (Sandbox Code Playgroud)