[英]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/cool
的view
值C
而不是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.