Python 使用pandas merge和isin运算符从另一个无法正常工作的数据帧中删除数据帧子集

Python 使用pandas merge和isin运算符从另一个无法正常工作的数据帧中删除数据帧子集,python,pandas,dataframe,merge,isin,Python,Pandas,Dataframe,Merge,Isin,我希望从原始数据帧中删除数据的子集 Subset data: Mismatch_test_final: 141 columns, 14222 rows Main data: X_TNR_final: 140 columns, 132252 rows 我想要实现的示例: X_TNR_final= pd.DataFrame({'k': ['foo', 'bar', 'baz', 'foo'], 'value': [1, 2, 3, 5]}) Mism

我希望从原始数据帧中删除数据的子集

Subset data: Mismatch_test_final: 141 columns, 14222 rows    
Main data: X_TNR_final: 140 columns, 132252 rows
我想要实现的示例:

X_TNR_final= pd.DataFrame({'k': ['foo', 'bar', 'baz', 'foo'],
                    'value': [1, 2, 3, 5]})
Mismatch_test_final = pd.DataFrame({'k': ['foo'],
                    'value': [5]})

leftover= df1.merge(df2,how='left',indicator=True)
answer = leftover.loc[leftover['_merge']=='left_only']
预期产量

df1:
k   value
foo  1
bar  2
baz  3
foo  5

df2:
k   value
foo   5

answer:
k   value
foo  1
bar  2
baz  3

我提到了其他线程,如 但不知怎么的,它对我不起作用

方法1

我删除子集中的一个额外列,并使用indicator=True合并


remaining_TNR_Test = Test_TNR_final.merge(Mismatch_test_final.drop(['TPR_1'],axis=1), how='outer',indicator=True)
remaining_TNR_Test_final = remaining_TNR_Test[remaining_TNR_Test['_merge']=='left_only']
我得到的输出的行数比预期的多,这表明删除操作没有正确进行

Actual output: 127794 rows, 140 columns  
Expected output: 118030 rows (132252-14222), 140 columns
方法2:我还尝试使用“isin”操作符

remaining_TNR_Test_dummy=Test_TNR_final[~(Test_TNR_final.isin(Mismatch_test_final.drop(['TPR_1'],axis=1)).all(axis=1))]
使用此技术时,行数保持不变。这是不可能的

Actual output: 132252 rows, 140 columns  
Expected output: 118030 rows (132252-14222), 140 columns

有人能帮我吗?非常感谢!谢谢

请随所需结果附上一小部分数据帧样本。看看。谢谢,我已经添加了一个小样本和期望的结果。希望没问题,我是新来的我想使用
leftover=df1.merge(df2,how='left',indicator=True)
应该适合你。使用此技术会遇到什么问题?无法再现错误。您的示例代码生成预期的输出。可能问题出在代码中的数据中,而不是代码中的数据。请随所需结果一起提供数据帧的小样本。看看。谢谢,我已经添加了一个小样本和期望的结果。希望没问题,我是新来的我想使用
leftover=df1.merge(df2,how='left',indicator=True)
应该适合你。使用此技术会遇到什么问题?无法再现错误。您的示例代码生成预期的输出。问题可能出在数据中,而不是代码中。