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)
应该适合你。使用此技术会遇到什么问题?无法再现错误。您的示例代码生成预期的输出。问题可能出在数据中,而不是代码中。