【发布时间】:2018-05-19 04:59:36
【问题描述】:
我正在尝试从 pandas 数据框中删除列中唯一项目少于 10 个的所有列。但是,我的一些数据是列表,我收到错误unhashable type: 'list'。有道理,因为 pandas 与 hashmap 进行比较。
我当前的代码是
for i in df.columns:
if len(df[i].unique()) < 10:
df.drop(i, 1)
在我得到一个列表对象之前,它工作得很好。出于我的目的, list1 和 list2 不是唯一的。 [1, 2] 和 [2, 1] 不是唯一的,即使 [1, 2] == [2, 1] 为 False。
我应该如何执行此操作?将列表分开是没有意义的,而且由于我有 1400 个列,因此我无法显式输入这些列。
提前非常感谢!
【问题讨论】:
-
也许这里是使用套装的好地方?
set([1,2]) == set([2,1])是真的 -
旁注,如果您不必按顺序删除列,您可以只形成一个范围内列的列表,然后在
for循环之后将它们一起删除。