无法将dataframe列映射到字典条目

2024-05-13 23:18:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望生成以下代码:

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')

Tags: micronoseeyewestspecsoutheastdatatype
1条回答
网友
1楼 · 发布于 2024-05-13 23:18:51

以下是使用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

相关问题 更多 >