我应该得到不同数量的不同材质的木头。但所有材料我都得到0。
%% writefile wood.txt
item,material,number
100,oak,33
110,maple,14
120,oak,7
145,birch,3
tree_to_int = dict(oak=1,maple=2,birch=3)
def convert(s):
return tree_to_int.get(s,0)
data = np.genfromtxt('wood.txt', delimiter=',', dtype=np.int,
names=True,converters={1:convert})
data
[输出]:
array([(100, 0, 33), (110, 0, 14), (120, 0, 7), (145, 0, 3)],dtype=[('item', '<i4'), ('material', '<i4'), ('number', '<i4')])
答案 0 :(得分:0)
结果是,因为从“ wood.txt”中读取的字符串是字节字符串。这就是为什么在词典中找不到它们的原因。要解决此问题,只需解码如下所示的字节格式
def convert(s):
return tree_to_int.get(s.decode("utf-8") , 0)
或者,您也可以使用熊猫
import pandas
tree_to_int = pandas.DataFrame([{'material': 'oak', 'material_int': 1}, {'material': 'maple', 'material_int': 2}, {'material': 'birch', 'material_int': 3}])
df = pandas.read_csv('wood.txt')
data = pandas.merge(df, tree_to_int, how='left', on='material')