如何基于第二个DataFrame为目标DataFrame添加匹配列并合并数据?
基于关联列合并DataFrame新增列的解决方案
需求说明
现有两个DataFrame:
- df_a为目标操作对象,需新增一列
Name - df_b包含关联列
Code和对应的Name值,需将匹配的Name映射到df_a中
原始数据
df_a数据:
_ | Code | Speed | Velocity | 0 | DA | 23 | 22 | 1 | ES | 23 | 22 | 2 | DA | 23 | 22 | 3 | GA | 23 | 22 | 4 | NU | 23 | 22 |
df_b数据:
_ | Code | Name | 0 | DA | DinoAero | 1 | ES | Espeed | 2 | GA | GeoArk | 3 | NU | NewUnicorn |
实现方法
使用pandas的merge()方法执行左连接,保留df_a的所有行,并通过Code列匹配df_b中的Name值:
import pandas as pd # 构造示例DataFrame df_a = pd.DataFrame({ 'Code': ['DA', 'ES', 'DA', 'GA', 'NU'], 'Speed': [23, 23, 23, 23, 23], 'Velocity': [22, 22, 22, 22, 22] }) df_b = pd.DataFrame({ 'Code': ['DA', 'ES', 'GA', 'NU'], 'Name': ['DinoAero', 'Espeed', 'GeoArk', 'NewUnicorn'] }) # 左连接合并,新增Name列 result_df = pd.merge(df_a, df_b[['Code', 'Name']], on='Code', how='left') # 调整列顺序(可选,匹配目标结果的列顺序) result_df = result_df[['Code', 'Name', 'Speed', 'Velocity']] print(result_df)
运行结果
Code Name Speed Velocity 0 DA DinoAero 23 22 1 ES Espeed 23 22 2 DA DinoAero 23 22 3 GA GeoArk 23 22 4 NU NewUnicorn 23 22
内容的提问来源于stack exchange,提问作者Lemsic
相关产品推荐
相关产品推荐

