我正在尝试使用预定义的整数到整数python字典,以便将pandas数据帧中的相应行映射到新行而不会成功。
我有以下数据框:
data=np.array([
['Item 1',7365301,"Cool item."]
])
items = pd.DataFrame(data = data, columns = ['name','id','description'])
我有一个python字典,它从int-> int映射如下:
item_map = {7365301: 10}
我正在尝试使用Pandas map
将字典中的值映射到新列:
items['id2'] = items['id'].map(inverse_item_map)
最终得到以下内容:
name id description id2
0 Item 1 7365301 Cool item. NaN
或者喜欢:
items['id2'] = items['id'].map(inverse_item_map).astype(int)
抛出ValueError:
Cannot convert non-finite values (NA or inf) to integer
这里发生了什么?我在这里做错了吗?为什么这个操作不成功?
答案 0 :(得分:1)
问题是,您是使用np.array
传递值,它不支持多种类型,这意味着如果有str,它也会将所有数字转换为str。
检查数据
data=np.array([
['Item 1',7365301,"Cool item."]
])
data
#str
Out[16]: array([['Item 1', '7365301', 'Cool item.']], dtype='<U10')
这就是你成为str类型的原因
items.applymap(type)
Out[14]:
name id description
0 <class 'str'> <class 'str'> <class 'str'>
我建议将item_map = {7365301: 10}
更改为item_map = {'7365301': 10}
然后
items['id2'] = items['id'].map(inverse_item_map).astype(int)