“系列对象是可变的,无法进行散列”错误

2024-02-04

我正在尝试让以下脚本正常工作。输入文件由 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(使用前将#替换为@)

“系列对象是可变的,无法进行散列”错误 的相关文章

随机推荐