python - 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 是我最后的 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>
解决方案
您的错误更为根本,与 itertools 无关:可变类型除非提供hash
方法,否则不可散列!
简单类型也会发生这种情况,但错误更清楚。
>>> set().add({'a':1})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
推荐阅读
- libreoffice - Libreoffice Base macro - How to make visible/hide a control on a form?
- python-3.x - 如何在odoo中将一个模型的字段与另一个模型的字段进行比较
- php - 无法使用 PHP 上传文件
- json - How to use foreach and append string in liquid json transformation
- r - 如何将点从数据库添加到 tmap?
- python - 无法为 python 3.7 安装 PyFlux
- python - MathText 标记呈现为点而不是字符串
- c - 你可以在 C 中同时使用 printf() 和 ncurses 函数吗?
- python - Histograms Of Data Along Each Axis?
- python - How to concatenate arrays using conditioning in Python?