如何解决TypeError:“系列”对象是可变的,因此无法将其散列以进行修改并将excel文件转换为数据框
import pandas as pd
import itertools
data = pd.read_excel("Kitchen.xlsx")
dict_data={}
for i in range(data.shape[0]):
if(data["Yes_No"][i]=="yes"):
if(data["Menu"] in dict_data.keys()):
dict_data[data["Menu"][i]].append(data["Specification"][i])
else:
dict_data[data["Menu"][i]]=list(data["Specification"][i])
menu=pd.read_csv("Menu.csv")
menu["Menu"]=""
for i in range(menu.shape[0]):
name=menu["Name"][i]
comb=list(FC["Combinations"][i].split("+"))
l=[]
for c in comb:
l.append(dict_data[c])
all_combinations=list(itertools.product(*l))
for men_cmb in all_combinations:
s=""
for item in men_cmb:
s+=str(item)+"||"
menu["Menu"][i]=s
i+=1
menu.to_csv("Menu.csv")
我想打印菜单的配料组合。这是我第一次使用itertools,所以我真的不知道该错误意味着什么。我基本上想打印所有可能的组合来制作具有不同成分的菜单。 Menu.csv是我的最后一个强项,但在Kitchen.xls中,我有配料。
这是输出
C:\VEpython\Scripts\Drivers\Scripts>C:/Users/212803155/AppData/Local/Programs/Python/python38-32/python.exe "c:/VEpython/Scripts/Drivers/Scripts/import pandas as pd.py"
Traceback (most recent call last):
File "c:/VEpython/Scripts/Drivers/Scripts/import pandas as pd.py",line 7,in <module>
if(data["Menu"] in dict_data.keys()):
File "C:\Users\212803155\AppData\Local\Programs\Python\python38-32\lib\site-packages\pandas\core\generic.py",line 1798,in __hash__
raise TypeError(
TypeError: 'Series' objects are mutable,thus they cannot be hashed
C:\VEpython\Scripts\Drivers\Scripts>
解决方法
您的错误更根本,并且与itertools不相关:可变类型除非提供hash
方法,否则是不可哈希的!
这也发生在简单类型上,但错误更明显。
>>> set().add({'a':1})
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
TypeError: unhashable type: 'dict'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。