TypeError:“Series”对象是可变的,因此无法对其进行散列以进行修改,也无法将excel文件转换为数据框

2024-10-03 15:33:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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是我最后的excel,但在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>

Tags: csvinimportpandasfordataasscripts
1条回答
网友
1楼 · 发布于 2024-10-03 15:33:16

您的错误更为基本,与itertools无关:可变类型不可散列,除非它们提供hash方法

简单类型也会出现这种情况,但错误更明显

>>> set().add({'a':1})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'

相关问题 更多 >