Python如何合并含换行分隔企业名、列结构不同的两个DataFrame
实现方案
核心逻辑
你之前的思路方向是对的,只差将拆分后的列表展开为单行、再用左连接匹配两步操作:
- 把DF1的
Alliances_names列按\n拆分为企业列表 - 用
explode方法将列表展开为多行,每行对应1个拆分后的企业,其余字段自动复制原行值 - 以拆分出的企业名为关联键,左关联DF2即可,DF2中不存在的企业对应字段会自动填充NaN
完整代码示例
import pandas as pd # 样本数据,实际场景替换为你自己的DF1、DF2即可 df1 = pd.DataFrame({ "Alliances_names": ["企业A\n企业B\n企业C", "企业B\n企业D", "企业E\n企业F"], "Value1": [10, 20, 30] }) df2 = pd.DataFrame({ "Company": ["企业A", "企业B", "企业D", "企业F"], "Number1": [1001, 1002, 1004, 1006], "Number2": [2001, 2002, 2004, 2006] }) # 业务逻辑实现 # 1. 拆分联盟名称为企业列表 df1["Company"] = df1["Alliances_names"].str.split("\n") # 2. 列表展开为多行 df1_exploded = df1.explode("Company", ignore_index=True) # 可选:如果企业名称前后有空格/换行残留,可加一步清洗避免匹配失败 # df1_exploded["Company"] = df1_exploded["Company"].str.strip() # 3. 左连接匹配DF2的数值字段 result = df1_exploded.merge(df2, on="Company", how="left") # 输出结果 print(result)
性能说明
这个方案用的都是pandas原生优化的API,比自行循环遍历效率高10倍以上,即使是百万级以上的数据量也可以正常运行。
内容的提问来源于stack exchange,提问作者Anna Shevtsova
相关产品推荐
相关产品推荐

