如何基于另一DataFrame的THIS_info字段为目标DataFrame新增列?
基于共同字段为DataFrame新增列的实现方法
你可以通过以下两种常用的Pandas方法实现需求:
方法1:使用merge进行左连接合并
merge是Pandas中专门用于数据合并的函数,通过指定共同字段THIS_info进行左连接,能保留第一个DataFrame的所有行并匹配对应this_algo值:
import pandas as pd # 初始化两个DataFrame df1 = pd.DataFrame({ 'some_info': ['abd', 'def', 'www', 'qqq', 'wws', '2222'], 'THIS_info': ['set_1', 'set_1', 'set_1', 'set_2', 'set_2', 'set_3'] }) df2 = pd.DataFrame({ 'THIS_info': ['set_1', 'set_2', 'set_3'], 'this_algo': ['algo_1', 'algo_2', 'algo_2'] }) # 左连接合并,保留df1所有行 result_df = df1.merge(df2, on='THIS_info', how='left') print(result_df)
执行后得到的结果:
some_info THIS_info this_algo 0 abd set_1 algo_1 1 def set_1 algo_1 2 www set_1 algo_1 3 qqq set_2 algo_2 4 wws set_2 algo_2 5 2222 set_3 algo_2
方法2:使用map进行字典映射
如果第二个DataFrame仅作为映射表使用,可以将其转换为字典,再通过map方法快速赋值:
# 将df2转换为映射字典 algo_mapping = df2.set_index('THIS_info')['this_algo'].to_dict() # 为df1新增this_algo列 df1['this_algo'] = df1['THIS_info'].map(algo_mapping) print(df1)
这种方法效率较高,尤其适合映射表数据量较小的场景,最终结果与方法1一致。
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

