如何从数据框熊猫中删除行

时间:2021-07-14 15:07:22

标签: python pandas dataframe

我有dataframe

 name    cat1    cat2    cat3
 'aa bb'    A      A-1   A-1-1
 'cc dd'    B      B-1   B-1-1
 'ee aa'    C      C-1   C-1-1
 'gg bb'    D      D-1   D-1-1

我有这样的列表

list_words = ['aa', 'gg']

我想删除所有包含的行 list_words

更新

我用过这个代码但是太慢了,这个代码只用于aa

dfg = dataframe.loc[dataframe.name.str.contains("aa", na=False)]
df_name = dfg.name.tolist()
for k in df_name:
    dataframe.drop(dataframe.loc[dataframe.name == k].index)

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

import numpy as np
import pandas as pd

df={'name':['aa bb', 'cc dd', 'ee aa', 'gg bb'], 'cat1':['A', 'B', 'C', 'D'], 'cat2':['A-1', 'B-1', 'C-1', 'D-1'], 'cat3':['A-1-1', 'B-1-1', 'C-1-1', 'D-1-1']}
df= pd.DataFrame(df)
list_words =['aa', 'gg']

for i in range(len(df['name'])):
    if list_words[0] in name[i]:
        df= df.drop([i])
    elif list_words[1] in name[i]:
        df= df.drop([i])

答案 1 :(得分:0)

这是一个更好的答案:

df={'name':['aa bb', 'cc dd', 'ee aa', 'gg bb'], 'cat1':['A', 'B', 'C', 'D'], 'cat2':['A-1', 'B-1', 'C-1', 'D-1'], 'cat3':['A-1-1', 'B-1-1', 'C-1-1', 'D-1-1']}
df= pd.DataFrame(df)
list_words =['aa', 'gg']

submask=df.name.str.split(expand=True)
mask=~submask.isin(list_words)

answer= df[mask[0] & mask[1]]