Python np.unique不返回唯一值

Python np.unique不返回唯一值,python,pandas,numpy,Python,Pandas,Numpy,我有一个数据帧,df,带有列“x”。设置变量col=“x”。在尝试执行以下操作以获取唯一值时 list(df[col].dropna().unique()) 我正在返回一个具有重复值的列表 ['1.Project Viewer\n2.Project Lead', '1․Project Viewer\n2․Project Lead', '1.Project Viewer\n2.Project Member\n3.Program Lead'] 在找到唯一值之前,我使用了转换为字符串类型和剥离

我有一个数据帧,df,带有列“x”。设置变量col=“x”。在尝试执行以下操作以获取唯一值时

list(df[col].dropna().unique())
我正在返回一个具有重复值的列表

['1.Project Viewer\n2.Project Lead',
 '1․Project Viewer\n2․Project Lead',
 '1.Project Viewer\n2.Project Member\n3.Program Lead']
在找到唯一值之前,我使用了转换为字符串类型和剥离。 像这样

df[col] = df[col].dropna().astype('str')
df[col] = df[col].str.strip()
有什么特别的原因吗?如何获取唯一值?

粘贴的列表仅包含唯一值。字符编码在这里对你不利

第一个条目使用
字符,而第二个条目使用视觉上相似但技术上不同的
-
字符。眼睛认为这些记录是重复的,但是字符串中的位不匹配,所以它们都是唯一的


我建议您在数据中搜索字符超出标准ASCII字符范围的条目。然后,您可以决定是手动清理这些记录(如果记录相对较少),还是以编程方式创建清理这些记录的方法(例如用下划线替换所有非标准字符,或者为这些字符找到合适的替换项)。

您是对的。此外,我还使用ord()检查了两个“.”的Unicode等价性。一个是chr(8228),另一个是chr(46)。因此,为了达到我的目的,我继续执行以下步骤#将chr(8228)替换为(.)df[col]=df[col].str.replace(chr(8228),'。)