基于指定匹配值,用另一个DataFrame替换pandas DataFrame列值
问题描述
已知合并操作,但现有合并相关内容无法针对性解决以下需求:给定一组用于匹配行的值列表,将data_1中的列值替换为data_2中的对应列值。
示例数据与预期输出
replace = ["a", "c", "x"] data_1 = pd.DataFrame( { "val_1": ["a", "b", "c", "x", "y", "z"], "val_2": ["one", "two", "three", "four", "five", "six"], } ) data_2 = pd.DataFrame( { "val_1": [ "a", "b", "c", "p", "q", "x", "y", "z", ], "val_2": ["ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT"], } ) # 预期输出:目标结果 output = pd.DataFrame( { "val_1": ["a", "b", "c", "x", "y", "z"], "val_2": ["ONE", "two", "THREE", "SIX", "five", "six"], } )
可行实现方法
以下是一种简洁的实现方式:
df_m = pd.merge(data_1, data_2, on=['val_1']) data_1['val_2'] = np.where(df_m['val_1'].isin(replace), df_m['val_2_y'], df_m['val_2_x'], )
内容的提问来源于stack exchange,提问作者baxx
相关产品推荐
相关产品推荐

