我创建了一个字典CODE_di,其中包含2列«Code1»«Code2»,我想将«Code2»中包含的值映射到现有的DataFrame'帧'
CODE_di = [{'PF5684' : 5643, 'KT6853':3457,....}]
CODE_di = frame_Code.set_index('Code1').T.to_dict('records')
frame['Code2']= frame ['Code1'].map(CODE_di)
当我映射时我得到了这个错误,不明白为什么它不起作用。
TypeError:'list'对象不可调用
示例:
df = pd.DataFrame({'col1':['AZER424','GFDG5345','DG6546'],'col2':[1234,467,1347]})
dict_test = df.set_index('col1').T.to_dict('records')
df1 = pd.DataFrame({'col3':['AZER424','DG6546']})
df1['code']= df1['col3'].map(dict_test)
P.S:当我用'list'或'series'替换'records'时它运行正常,但我只需要记录
答案 0 :(得分:2)
要创建dict,您需要在系列中应用.to_dict()。通过在set_index之后选择哪个列col2
来实现这一点。
dict_test = df.set_index('col1')['col2'].to_dict()
这是因为:
type(df.set_index('col1')['col2']) == 'pandas.core.series.Series'