drop_duplicates无法与您的数据框中的列表一起使用,这是错误消息所暗示的。但是,您可以将重复项放在转换为str的数据帧上,然后使用结果中的索引从原始df中提取行。
设定
df = pd.Dataframe({'Keyword': {0: 'apply', 1: 'apply', 2: 'apply', 3: 'terms', 4: 'terms'}, 'X': {0: [1, 2], 1: [1, 2], 2: 'xy', 3: 'xx', 4: 'yy'}, 'Y': {0: 'yy', 1: 'yy', 2: 'yx', 3: 'ix', 4: 'xi'}})#Drop directly causes the same errordf.drop_duplicates()Traceback (most recent call last):...TypeError: unhashable type: 'list'
解
#convert hte df to str type, drop duplicates and then select the rows from original df.df.loc[df.astype(str).drop_duplicates().index]Out[205]: Keyword X Y0 apply [1, 2] yy2 apply xy yx3 terms xx ix4 terms yy xi#the list elements are still list in the final results.df.loc[df.astype(str).drop_duplicates().index].loc[0,'X']Out[207]: [1, 2]
编辑:用loc替换iloc。在这种特殊情况下,两者都作为索引与位置索引匹配而起作用,但这不是一般性的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)