python-数据帧查找重复,条件是一行不同
我想发现条件为1列的重复行不同python-数据帧查找重复,条件是一行不同,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我想发现条件为1列的重复行不同 df = pd.DataFrame([['A', '1','Tom'], ['A','1','Tom'], ['A','1','Jerry'], ['A','1','Jerry'], ['A','2','Mary'],['B','1','Tony'],['B','1','Andy']], columns = ['company code','user id', 'user name']) df[out] company code use
df = pd.DataFrame([['A', '1','Tom'], ['A','1','Tom'], ['A','1','Jerry'], ['A','1','Jerry'], ['A','2','Mary'],['B','1','Tony'],['B','1','Andy']], columns = ['company code','user id', 'user name'])
df[out]
company code user id user name
0 A 1 Tom
1 A 1 Tom
2 A 1 Jerry
3 A 1 Jerry
4 A 2 Mary
5 B 1 Tony
6 B 1 Andy
条件是1家公司只能有1个同名的用户id。在这种情况下,结果如下所示,因为用户id是不同的名称(Tom和Jerry),所以它是重复的数据
company code user id user name Duplicate
0 A 1 Tom True
1 A 1 Tom True
2 A 1 Jerry True
3 A 1 Jerry True
4 A 2 Mary False
5 B 1 Tony True
6 B 1 Andy True
我尝试使用duplicated(),但结果不正确,如下所示:
df['dup_id'] = df[['company code','user id']].duplicated(keep=False)
df['dup_name'] = df[['company code','user name']].duplicated(keep=False)
df['result dup'] = np.where((df['dup_id']==True & (df['dup_name']==False)),True,False)
company code user id user name dup_id dup_name result dup
0 A 1 Tom True True False
1 A 1 Tom True True False
2 A 1 Jerry True True False
3 A 1 Jerry True True False
4 A 2 Mary False False False
5 B 1 Tony True False True
6 B 1 Andy True False True
因为汤姆和杰瑞的名字是重复的,所以我一直在努力争取不同的名字。提前感谢您的帮助 将最后一行替换为:
df['result_dup'] = df.apply(lambda x: x.dup_id or x.dup_name, axis=1)
将最后一行替换为:
df['result_dup'] = df.apply(lambda x: x.dup_id or x.dup_name, axis=1)
是不是:
df['Duplicate'] = df.duplicated(['company code', 'user id'], keep=False)
输出:
company code user id user name Duplicate
0 A 1 Tom True
1 A 1 Tom True
2 A 1 Jerry True
3 A 1 Jerry True
4 A 2 Mary False
5 B 1 Tony True
6 B 1 Andy True
是不是:
df['Duplicate'] = df.duplicated(['company code', 'user id'], keep=False)
输出:
company code user id user name Duplicate
0 A 1 Tom True
1 A 1 Tom True
2 A 1 Jerry True
3 A 1 Jerry True
4 A 2 Mary False
5 B 1 Tony True
6 B 1 Andy True
为什么第5行和第6行没有复制Tony?这只是复制的df.duplicated(keep=False)?@QuangHoang你是对的,对不起我的错误。我已经编辑了我的问题。Thanks@Erfan我尝试使用df.duplicated(keep=False),但由于用户id是主键,所以如果名称也不同,我希望返回True。您使用的是
dup\u id
,那么为什么Tony
在第5行和第6行没有重复?这只是df.duplicated(keep=False)
?@QuangHoang您是对的,抱歉我的错误。我已经编辑了我的问题。Thanks@Erfan我尝试使用df.duplicated(keep=False),但由于用户id是主键,所以如果名称也不同,我希望返回True。您可以使用dup\u id