繁体   English   中英

Pandas - 如何从基于另一个子集的子集中删除重复项

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

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

我有左 df L和右 df R

我想确保从L中删除所有在L中看到的列A任何重复项,这些重复项也在 df R中 - 整个列。

如何做到这一点?

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/coolviewC而不是B :)

Output 将是

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 内或两者的串联中)并仅保留第一个。

您可能需要更微妙的案例处理,具体取决于您拥有的副本的位置和数量,但如果没有更强大的示例集,就很难判断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM