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

时间:2019-05-14 07:05:51

标签: python pandas logic

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

import pandas as pd

df = df[~df['eligibility'].str.contains(eligibility_criteria, na=False)] #This works

如何添加此'except when'限定词...

#df['tariff'].str.startswith("***")

1 个答案:

答案 0 :(得分: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("***")]