import pandas as pd

# 假设这是您的两个DataFrame
df1 = pd.DataFrame({'a1': [1, 2, 3], 'b1': ['NaN', 'ddd', 'gg']})
ex_df = pd.DataFrame({'a2': [1, 2, 4], 'b2': ['x', 'y', 'z']})

def map_exclude_df(df1,ex_df):
    # 将ex_df中的'a2'和'b2'列重命名为与df1一致，方便后续操作
    ex_df.rename(columns={'a2': 'a1', 'b2': 'b1'}, inplace=True)

    # 使用merge创建一个临时DataFrame，只包含匹配的行
    temp_df = df1[['a1']].merge(ex_df, on='a1', how='left')

    # 更新df1的'b1'列
    df1.set_index('a1', inplace=True)
    temp_df.set_index('a1', inplace=True)
    df1.update(temp_df)

    # 重置索引
    df1.reset_index(inplace=True)

    print(df1)