我正在尝试让以下脚本正常工作。输入文件由 3 列组成:基因关联类型、基因名称和疾病名称。
cols = ['Gene type', 'Gene name', 'Disorder name']
no_headers = pd.read_csv('orphanet_infoneeded.csv', sep=',',header=None,names=cols)
gene_type = no_headers.iloc[1:,[0]]
gene_name = no_headers.iloc[1:,[1]]
disease_name = no_headers.iloc[1:,[2]]
query = 'Disease-causing germline mutation(s) in' ###add query as required
orph_dict = {}
for x in gene_name:
if gene_name[x] in orph_dict:
if gene_type[x] == query:
orph_dict[gene_name[x]]=+ 1
else:
pass
else:
orph_dict[gene_name[x]] = 0
我不断收到一条错误消息:
系列对象是可变的并且不能被散列
任何帮助将不胜感激!
不久:gene_name[x]
是一个可变对象,因此无法对其进行哈希处理。要使用一个对象作为字典中的键,Python 需要使用它的哈希值,这就是为什么你会得到一个错误。
进一步解释:
可变对象是其值可以改变的对象。
例如,list
是一个可变对象,因为您可以附加到它。int
是一个不可变的对象,因为你无法更改它。当你这样做时:
a = 5;
a = 3;
你不改变的价值a
,您创建一个新对象并进行a
指出它的价值。
可变对象不能被散列。看到这个answer https://stackoverflow.com/questions/14535730/what-do-you-mean-by-hashable-in-python.
为了解决您的问题,您应该使用不可变对象作为字典中的键。例如:tuple
, string
, int
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)