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