我正在尝试在我的数据帧上使用 drop_duplicates 方法,但出现错误。请参阅以下内容:
错误:TypeError:无法散列的类型:’list’
我正在使用的代码:
df = db.drop_duplicates()
我的数据库很大,包含字符串、浮点数、日期、NaN、布尔值、整数……感谢您的帮助。
原文由 SLack A 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试在我的数据帧上使用 drop_duplicates 方法,但出现错误。请参阅以下内容:
错误:TypeError:无法散列的类型:’list’
我正在使用的代码:
df = db.drop_duplicates()
我的数据库很大,包含字符串、浮点数、日期、NaN、布尔值、整数……感谢您的帮助。
原文由 SLack A 发布,翻译遵循 CC BY-SA 4.0 许可协议
@Allen 的回答很好,但有一点问题。
df.iloc[df.astype(str).drop_duplicates().index]
在示例中它应该是 loc 而不是 iloc.loot。
a = pd.DataFrame([['a',18],['b',11],['a',18]],index=[4,6,8])
Out[52]:
0 1
4 a 18
6 b 11
8 a 18
a.iloc[a.astype(str).drop_duplicates().index]
Out[53]:
...
IndexError: positional indexers are out-of-bounds
a.loc[a.astype(str).drop_duplicates().index]
Out[54]:
0 1
4 a 18
6 b 11
原文由 Hsgao 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答895 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
正如错误消息所暗示的那样,drop_duplicates 不适用于数据框中的列表。但是,您可以在转换为 str 的数据帧上删除重复项,然后使用结果中的索引从原始 df 中提取行。
设置
解决方案