在列上删除具有多个条件的行

时间:2019-04-06 07:40:32

标签: python pandas

我想在许多情况下删除行。下面是代码,但要花很多时间。

a=[]
for i in range(len(df)):
    if df['col_1'][i] in ['a','b'] and (pd.isna(df['col_2'][i])==True or df['col_2'][i]=='c'):
        a.append(i)

df.drop(a, inplace=True)
df.reset_index(inplace=True,drop=True)

2 个答案:

答案 0 :(得分:2)

invert条件下使用boolean indexing-这里isin~|&&至{{ 1}},|isnanotna==

!=

答案 1 :(得分:1)

尝试一下:

df = df.loc[~(df['col_1'].isin(['a','b']) & ((pd.isna(df['col_2'])==True) | (df['col_2']=='c')))]