Pandas两个DataFrame按user匹配并拼接结果列到其中一个的实现方案
Pandas实现代码
你可以通过两种常见方式实现该需求:
方式1:表关联后拼接字段
先按user字段关联两个表,区分重名字段后拼接内容:
import pandas as pd # 原始数据 df = pd.DataFrame({'user': ['A', 'B', 'C'], 'results': ['hi how why', 'which how raw', 'final what is']}) df_v2 = pd.DataFrame({'user': ['A', 'B', 'C'], 'results': ['John', 'Peter', 'Anne']}) # 按user合并,给第二个表的results列加后缀区分 df_merge = pd.merge(df, df_v2, on='user', suffixes=('', '_v2')) # 拼接两个结果列,用空格分隔 df_merge['results'] = df_merge['results'] + ' ' + df_merge['results_v2'] # 提取目标字段得到最终结果 df_new = df_merge[['user', 'results']]
方式2:字典映射直接拼接
如果两个表的user字段完全匹配,不需要处理匹配失败的情况,可以用更简洁的映射写法:
# 生成user到第二个表results值的映射字典 user_map = df_v2.set_index('user')['results'].to_dict() # 直接拼接内容 df['results'] = df['results'] + ' ' + df['user'].map(user_map) df_new = df
两种方式运行后得到的df_new都和你需要的输出格式完全一致。
内容的提问来源于stack exchange,提问作者isaac.af95
相关产品推荐
相关产品推荐

