IIU C вы можете использовать explode
и duplicated
:
df = pd.DataFrame({"doctor_name":["Dr. ABC","Dr. ABC", "Dr. Who","Dr. Strange"],
"phone_number":[['1234','3456','7890'],['7676','1234','8765'], np.NaN, ["8697059406"]]})
df = df.explode("phone_number")
s = df["doctor_name"].value_counts()
print (df[df.duplicated("phone_number")|df["doctor_name"].isin(s[s.eq(1)].index)]) #add .groupby("doctor_name").agg(list) if you want them back into a list
doctor_name phone_number
1 Dr. ABC 1234
2 Dr. Who NaN
3 Dr. Strange 8697059406