首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我确信"items_tmp_dic2“的类型是dict,那么为什么要报告这个错误呢?

我确信"items_tmp_dic2“的类型是dict,那么为什么要报告这个错误呢?
EN

Stack Overflow用户
提问于 2019-09-24 15:26:46
回答 1查看 36关注 0票数 0
代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
path = 'F:/datasets/kaggle/predict_future_sales/'
train_raw = pd.read_csv(path + 'sales_train.csv')
items = pd.read_csv(path + 'items.csv')
item_category_id = items['item_category_id']
item_id = train_raw.item_id

train_raw.head()

代码语言:javascript
运行
复制
date    date_block_num  shop_id item_id item_price  item_cnt_day
0   02.01.2013  0   59  22154   999.00  1.0
1   03.01.2013  0   25  2552    899.00  1.0
2   05.01.2013  0   25  2552    899.00  -1.0
3   06.01.2013  0   25  2554    1709.05 1.0
4   15.01.2013  0   25  2555    1099.00 1.0

items.head()

代码语言:javascript
运行
复制
    item_name   item_id item_category_id
0   ! ВО ВЛАСТИ НАВАЖДЕНИЯ (ПЛАСТ.) D   0   40
1   !ABBYY FineReader 12 Professional Edition Full...   1   76
2   ***В ЛУЧАХ СЛАВЫ (UNV) D    2   40
3   ***ГОЛУБАЯ ВОЛНА (Univ) D   3   40
4   ***КОРОБКА (СТЕКЛО) D   4   40

然后我想添加一个" item_category_id“到train_raw,你的意思是从项目的数据,所以我想创建一个item_id和item_category_id的字典

代码语言:javascript
运行
复制
item_category_id = items['item_category_id']
item_id = train_raw.item_id
items_tmp = items.drop(['item_name'],axis=1)
items_tmp_dic = items_tmp.to_dict('split')
items_tmp_dic = items_tmp_dic.get('data')

items_tmp_dic2 = dict(items_tmp_dic)

ic_id = []
for i in np.nditer(item_id.values[:10]):
    ic_id.append(items_tmp_dic2.get(i))
print(len(ic_id))

不对

代码语言:javascript
运行
复制
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-50-be637620ea6d> in <module>
      6 ic_id = []
      7 for i in np.nditer(item_id.values[:10]):
----> 8     ic_id.append(items_tmp_dic2.get(i))
      9 print(len(ic_id))

TypeError: unhashable type: 'numpy.ndarray'

但是当我跑的时候

代码语言:javascript
运行
复制
for i in np.nditer(item_id.values[:10]):
    print(i)

我得到了

代码语言:javascript
运行
复制
22154
2552
2552
2554
2555
2564
2565
2572
2572
2573

我已经确认了"items_tmp_dic2“的类型是dict,为什么?

EN

回答 1

Stack Overflow用户

发布于 2019-09-24 16:58:17

我已经用int()解决了这个问题。

代码语言:javascript
运行
复制
for i in np.nditer(item_id.values[:10]):
    ic_id.append(items_tmp_dic2.get(int(i)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58075136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档