PS E:\数据建模> & C:/Users/asus/AppData/Local/Programs/Python/Python38/python.exe e:/数据建模/question6.py Traceback (most recent call last): File "e:/数据建模/question6.py", line 58, in <module> graph[p1] = [] TypeError: unhashable type: 'dict'
时间: 2024-01-01 15:03:42 浏览: 152
这个错误提示表明在 `question6.py` 文件的第 58 行,`graph[p1] = []` 这行代码中,`p1` 是一个字典类型,而字典类型是不可哈希的,不能作为字典的 key 值。
要解决这个问题,你需要确保 `p1` 是一个可哈希的类型,例如字符串、数字或者元组等。如果你需要使用字典作为 key 值,可以考虑使用元组作为 key 值,元组中包含的是字典中键值对的值。例如,你可以使用 `graph[(p1['x'], p1['y'])] = []` 来代替 `graph[p1] = []`。
相关问题
import openpyxl # 读取Excel文件 file = openpyxl.load_workbook('./智能合单POC数据(脱敏)_原始.xlsx') sheet = file.active # 将Excel数据转为DataFrame格式 data = [] for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, values_only=True): data.append(row) df = pd.DataFrame(data, columns=[col.value for col in sheet[1]]) df['要求送货时间'] = pd.to_datetime(df['要求送货时间'], format='%Y-%m-%d', errors='coerce' # 按日期分组,统计订单个数和车次 grouped = df.groupby('要求送货时间') result = pd.DataFrame({'订单个数': grouped.size(), '车次个数': grouped['车次'].nunique()}) print(result)报错为PS E:\数据建模> & C:/Users/asus/AppData/Local/Programs/Python/Python38/python.exe e:/数据建模/question4.py File "e:/数据建模/question4.py", line 369 grouped = df.groupby('要求送货时间') ^ SyntaxError: invalid syntax
这个错误是由于在 `pd.to_datetime` 函数调用的行末缺少了一个右括号。请在该行的末尾加上一个右括号,如下所示:
``` python
df['要求送货时间'] = pd.to_datetime(df['要求送货时间'], format='%Y-%m-%d', errors='coerce')
```
修改后,再运行代码看看是否还有其他错误。
File "e:/数据建模/question4.py", line 337, in <module> file = xlrd.open_workbook('./智能合单POC数据(脱敏)_原始.xlsx') File "C:\Users\asus\AppData\Local\Programs\Python\Python38\lib\site-packages\xlrd\__init__.py", line 170, in open_workbook raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported') xlrd.biffh.XLRDError: Excel xlsx file; not supported
根据报错信息,看起来是你使用的Excel文件是.xlsx格式的,而xlrd库只支持.xls格式的Excel文件。为了解决这个问题,可以使用openpyxl库来读取.xlsx格式的文件。以下是一个示例代码:
```python
import openpyxl
# 读取Excel文件
file = openpyxl.load_workbook('example.xlsx')
sheet = file.active
# 将Excel数据转为DataFrame格式
data = []
for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, values_only=True):
data.append(row)
df = pd.DataFrame(data, columns=[col.value for col in sheet[1]])
# 统计订单个数和车次
order_count = df.shape[0]
train_count = df['车次'].nunique()
print('订单个数:', order_count)
print('车次个数:', train_count)
```
需要注意的是,openpyxl库需要单独安装。可以使用以下命令来安装:
```
pip install openpyxl
```
同时,文件名和sheet页的名称需要替换成实际的文件名和sheet页名称。同时,'车次'需要替换成实际的列名。
阅读全文