使用Python删除pd.DataFrame的一部分

使用Python删除pd.DataFrame的一部分,python,pandas,dataframe,Python,Pandas,Dataframe,我使用DataFrame.iterrows()迭代数据帧中的行,如果一行满足某些条件,我将其存储在另一个数据帧中。有没有一种方法可以删除两个集合中出现的行,如set.difference(另一个集合) 我被要求提供一个代码,因此,由于我不知道我的问题的答案,我解决了我的问题并创建了另一个数据帧,我将良好的数据保存到该数据帧,而不是有两个数据帧并对它们进行区分 def test_right_chain(self, temp): temp__=pd.DataFrame() temp_

我使用DataFrame.iterrows()迭代数据帧中的行,如果一行满足某些条件,我将其存储在另一个数据帧中。有没有一种方法可以删除两个集合中出现的行,如set.difference(另一个集合)

我被要求提供一个代码,因此,由于我不知道我的问题的答案,我解决了我的问题并创建了另一个数据帧,我将良好的数据保存到该数据帧,而不是有两个数据帧并对它们进行区分

def test_right_chain(self, temp):
    temp__=pd.DataFrame()
    temp_=pd.DataFrame()
    key=temp["nr right"].iloc[0]
    temp_=temp_.append(temp.iloc[0])
    temp=temp[1:]
    for index, row in temp.iterrows():
        print row
        key_=row['nr right']
        if abs(key_-key)==1:
            pass
        elif len(temp_)>2:
            print row
            temp__.append(temp_)
            temp_=pd.DataFrame()
        else:
            temp_=pd.DataFrame()
        temp_=temp_.append(row)
        key=key_
    return temp__

您可以使用
df.merge(df1,df2,right_index=True,how='internal')
函数对两个数据帧进行交集,留下左侧数据帧中的行所显示的索引(我不知道为什么,但在使用
right_index=True
时会发生这种情况),然后检索这些行的索引。(我使用了这个问题的答案:)

现在,您需要在两个数据帧中显示的行的索引:

indexes= df3.index.values
然后您只需要从数据帧中删除这些行:

df1=df1.drop(df1.index[indexes])

您应该发布至少一行输入代码和预期输出,让我们重现您的问题并帮助您。如果您提供一个文本形式的5-7行的示例输入数据集和预期输出,将更容易帮助您
df1=df1.drop(df1.index[indexes])