Pandas - 如何根据另一个子集从一个子集中删除重复项

Pandas - How to remove duplicates from a subset based on another subset

我有 2 个具有相似列的子集,但它们共有的一列是列 A

我有左dfL和右dfR.

我想确保在 L 中看到的列 A 的所有重复项都在 df R 中从 L - 整个列中删除。

如何做到这一点?

import pandas as pd
L_df = pd.DataFrame({'A': ['bob/is/cool', 'alice/is/cool', 'jim/is/cool'], 
                   'view': ['A', 'B', 'B']})
R_df = pd.DataFrame({'A': ['ralf/is/cool', 'i/am/cool', 'alice/is/cool'], 
                   'view': ['A', 'B', 'C']})

我想得到这个结果,结果是删除列 A 的重复项,并从 L 而不是 R.

中获取重复值

所以我们采用 alice/is/coolview 值为 C 而不是 B 如果这有意义的话:)

输出将是

out = pd.DataFrame({'A': ['ralf/is/cool', 'i/am/cool', 'alice/is/cool', 'bob/is/cool', 'jim/is/cool'], 
                   'view': ['A', 'B', 'C', 'A', 'B']})

这就是你想要的吗?

>>> pd.concat([R_df, L_df]).drop_duplicates(keep='first', subset='A')
               A view
0   ralf/is/cool    A
1      i/am/cool    B
2  alice/is/cool    C
0    bob/is/cool    A
2    jim/is/cool    B

注意:这是根据您的描述胡乱猜测的结果。

它将不加区别地删除任何重复项(在 R 内、L 内或两者的串联中)并仅保留第一个。

您可能希望根据重复项的位置和数量对案例进行更微妙的处理,但如果没有一组更可靠的示例,则很难判断。