【发布时间】:2017-08-31 23:42:23
【问题描述】:
我无法将 10 列中的多个值合并为一个 set。我想使用一个集合,因为每一列都有重复的值,我希望得到一个所有值(医疗代码)的列表,而不在列表中重复它们中的任何一个。我能够从第一列中进行初始设置,但是当我尝试添加其他列时,我得到一个“不可散列的类型错误”。
这是我的代码:
data_sorted = data.fillna(0).sort_values(['PAT_ID', 'VISIT_NO'])
set_ICD1 = set(data_sorted['ICD_1'].unique())
print(len(set_ICD1))
set_ICD = set_ICD1.add(data_sorted['ICD_2'])
print(len(set_ICD))
这是我得到的错误:
11586 # (not part of the error this is the length of the initial set)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-e3966ec54661> in <module>()
1 set_ICD1 = set(data_sorted['ICD_1'].unique())
2 print(len(set_ICD1))
----> 3 set_ICD = set_ICD1.add(data_sorted['ICD_2'].unique())
4
5 print(len(set_ICD))
TypeError: unhashable type: 'numpy.ndarray'
任何解决此问题的建议或提示将不胜感激!
【问题讨论】:
-
错误正是它的意思。数组不可散列,它们也是可变的,这排除了散列。您需要另一个容器,如果您想从容器中添加项目,请使用
update()。 -
发生这种情况是因为您试图将整个列添加为 numpy.ndarray。尝试遍历该数组,并单独添加元素
标签: python pandas numpy set unique