我期待以下代码生成:
SPEC DATATYPE DIRECTION SPEC_PTERM
Eye Micro East Peeper
HindLimb Clin East Leg
Nose Micro West Snoz
Test8 Clin South UNMAPPED
相反,它产生:
SPEC DATATYPE DIRECTION SPEC_PTERM
Eye Micro East UNMAPPED
HindLimb Clin East Snoz
Nose Micro West UNMAPPED
Test8 Clin South UNMAPPED
此代码段有什么问题?
specData = pd.DataFrame([['Nose', 'Snoz'],['HindLimb','Leg'],['Eye','Peeper']], columns=['SPEC', 'SPEC_PREFERRED'])
new_df = pd.DataFrame ([['Eye','Micro', 'East'],['HindLimb','Clin', 'East'],['Nose','Micro', 'West'],['Test8', 'Clin', 'South']], columns=['SPEC', 'DATATYPE', 'DIRECTION'])
s = specData.set_index('SPEC')['SPEC_PREFERRED']
new_df['SPEC_PTERM'] = df['SPEC'].map(s).fillna('UNMAPPED')
答案 0 :(得分:0)
以下是使用join方法解决问题的方法:
specData = pd.DataFrame([['Nose', 'Snoz'],['HindLimb','Leg'],['Eye','Peeper']], columns=['SPEC', 'SPEC_PREFERRED'])
new_df = pd.DataFrame ([['Eye','Micro', 'East'],['HindLimb','Clin', 'East'],['Nose','Micro', 'West'],['Test8', 'Clin', 'South']], columns=['SPEC', 'DATATYPE', 'DIRECTION'])
s = specData.set_index('SPEC')['SPEC_PREFERRED']
new_df = (new_df.join(s, 'SPEC')
.fillna('UNMAPPED')
.rename(columns={'SPEC_PREFERRED': 'SPEC_PTERM'}))
print(new_df)
# SPEC DATATYPE DIRECTION SPEC_PTERM
# 0 Eye Micro East Peeper
# 1 HindLimb Clin East Leg
# 2 Nose Micro West Snoz
# 3 Test8 Clin South UNMAPPED