Pandas: 按条件去除重复项

3
有没有办法在使用drop_duplicates的同时添加条件?例如,我们有以下数据框:
import pandas as pd
df = pd.DataFrame({
'Customer_Name': ['Carl', 'Carl', 'Mark', 'Joe', 'Joe'],
'Customer_Id': [1000,None,None,None,50000]
})

根据这个数据框,我想要派生一个数据框,只包含唯一的 Customer_IdCustomer_Name 行。
    Customer_Id Customer_Name
0    1000        Carl
2    NaN         Mark
5    50000       Joe

不幸的是,我无法使用drop_duplicates方法进行删除,因为该方法总是会删除第一个或最后一个重复出现的项。

然而,在我的情况下,情况有所不同(请参见Carl和Joe)。此外,我也不能仅删除客户ID列中所有带有None条目的行,因为这样也会删除Mark的条目。

非常感谢任何帮助。


你可以尝试使用类似于 df.groupby('Customer_Name').first() 的方法吗? - Roman Pekar
如果同一客户有两行不为空的记录,应该怎么处理? - Roman Pekar
嗨,Roman,那么你可以取第一个。你可以假设名称是相同的。 - Andy
2个回答

1
这个正在处理您的示例:
>>> df.groupby('Customer_Name').first().reset_index()
  Customer_Name  Customer_Id
0          Carl         1000
1           Joe        50000
2          Mark          NaN

但我需要检查一下first()如何处理缺失值,以确保它的工作一致。


0

这将只返回最高编号的 Customer_Id,如果不可用,则返回 NaN

df.groupby('Customer_Name').Customer_Id.max().reset_index()

  Customer_Name  Customer_Id
0          Carl         1000
1           Joe        50000
2          Mark          NaN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接