我有一个数据框架和大约10-12列。其中一列是学生号,例如1234567,另一列是标识符,例如护照号码,许可证号码。我怎样才能发现每个学生都有一个唯一的标识符?像学生1234567只有标识符ABC5679K。此外,我想存储的学生谁被标记与重复标识符。例如,如果学生1234567也有标识符ABC3408T,我想知道这些。
假设这样的输入,其中第一个学生有一个唯一的其他id,而第二个学生有两个不同的id:
student_id other_id
0 1 a
1 1 a
2 2 b
3 2 c
可以使用GroupBy.transform
和nunique
:
mask = df.groupby('student_id')['other_id'].transform('nunique').gt(1)
print(df[mask])
输出:
student_id other_id
2 2 b
3 2 c
或者,对于所有具有重复其他id的学生列表:
s = df.groupby('student_id')['other_id'].nunique()
s[s>1].index.to_list()
输出:[2]
df.groupby(["student_name"])["passport_number"].nunique() > 1
您可以使用groupby和nunique函数来帮助您识别重复。希望这能回答你的问题