上述例程有点问题,定义了一个函数 match_code(name),里面用到了 df2 没有声明。

可以在函数 match_code(name) 内部声明 df2,或者将 df2 作为参数传入函数中。以下是两种修改方式:

方式一:在函数 match_code(name) 内部声明 df2

def match_code(name):
    df1 = pd.read_excel('file1.xlsx')
    df2 = pd.read_excel('file2.xlsx')
    df1['code'] = df1['code'].astype(str)
    df2['code'] = df2['code'].astype(str)
    df2['name'] = df2['name'].str.strip()
    df2 = df2.drop_duplicates(subset=['code'], keep='first')
    df2 = df2.set_index('code')
    code = df1[df1['name'] == name]['code'].values[0]
    code = code.strip()
    code = code.split('.')[0]
    if code in df2.index:
        return df2.loc[code]['name']
    else:
        return 'Not Found'

方式二:将 df2 作为参数传入函数中

def match_code(name, df2):
    df1 = pd.read_excel('file1.xlsx')
    df1['code'] = df1['code'].astype(str)
    df2['code'] = df2['code'].astype(str)
    df2['name'] = df2['name'].str.strip()
    df2 = df2.drop_duplicates(subset=['code'], keep='first')
    df2 = df2.set_index('code')
    code = df1[df1['name'] == name]['code'].values[0]
    code = code.strip()
    code = code.split('.')[0]
    if code in df2.index:
        return df2.loc[code]['name']
    else:
        return 'Not Found'

df2 = pd.read_excel('file2.xlsx')
result = match_code('Tom', df2)
print(result)
Python 函数中使用未声明变量:df2 的解决方法

原文地址: https://www.cveoy.top/t/topic/jW39 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录