我的 df1 包含“col”列,df2 包含“code”和“id”列。 df1 中的列“col”映射到 df2 中的“code”列。当我运行以下代码时:
def get_id_for_code(code):
try:
return df2.loc[df2['code'] == code, 'id'].iloc[0]
except IndexError:
return None
for index, row in df.iterrows():
result['resultId'] = get_id_for_code(row['col'])
错误抛出为:
return df2.loc[df2['code'] == code, 'id'].iloc[0]
NameError: name 'df2' is not defined
有人可以帮忙解决这个问题吗?
注意:数据帧是动态生成的。它们规模庞大,属于公司内部。数据框示例:
示例数据帧
import pandas as pd
df2 = pd.DataFrame({
'id': [1, 2, 3, 4],
'code': ['A1', 'B2', 'C3', 'D4']
})
df1 = pd.DataFrame({
'project': [1, 2, 3, 5, 7]
})
提前致谢。
IIUC用途:
df['resultId'] = df['col'].map(df2.drop_duplicates('code').set_index('code')['id'])