【发布时间】:2019-03-11 08:12:35
【问题描述】:
我有一个熊猫数据框,如下所示:
Name ID1 ID2
Joe 248 248
Joe 248 326
Joe 721 248
Anna 295 295
Bob 721 248
Bob 721 326
Bob 248 566
我只需要保留没有匹配 ID1 和 ID2 的行, 例外情况是,如果两个 ID 至少匹配一个名称,则删除它们。
例如:
对于 Name = Joe,ID 匹配一次 (248),因此删除所有包含 Joe 的行。
对于 Name = Bob,ID 永远不会匹配,因此保留 Bob 的所有行。
到目前为止,我已经尝试过:
通过对名称进行排序并检查 ID 是否匹配来删除重复项。但这并没有考虑到至少匹配一次的 ID。
df = df.sort_values(['Name']).drop_duplicates(['Name'],keep='first')
不确定 pandas 是否可以删除与“至少一次”匹配的条件的重复项。
【问题讨论】:
-
在您的问题中,您说“如果两个 ID 至少匹配一个名称,则删除它们” - 您的意思是删除所有具有 该名称 的行吗?他们是否匹配?
标签: python python-3.x pandas dataframe indexing