You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并两个Pandas DataFrame并添加合并匹配结果的新列

解决方案

你可以通过以下两步完成需求:

  1. 对Dataframe2按ErrorRow分组,将同一行的所有错误列合并为逗号分隔的字符串
  2. 将处理后的结果与Dataframe1进行左连接,把合并后的错误列添加到原表中

完整代码示例

import pandas as pd
import numpy as np

# 构造你的示例数据(新手可直接运行测试)
df1 = pd.DataFrame({
    'ErrorRow': [3, 4, 7],
    'MaterialID': [np.nan, np.nan, 56779],
    'Description': ['Part 1', 'Part 2', 'Part 3'],
    'UnitCost': [np.nan, 12, 25],
    'Quantity': [100, np.nan, np.nan],
    'Critical': ['false', 'true', 'false'],
    'Location': ['West', 'East', 'West']
})

df2 = pd.DataFrame({
    'ErrorRow': [3, 3, 4, 4, 7],
    'ErrorColumn': ['MaterialID', 'UnitCost', 'MaterialID', 'Quantity', 'Quantity']
})

# 聚合df2:同一ErrorRow的ErrorColumn合并为字符串
df2_aggregated = df2.groupby('ErrorRow')['ErrorColumn'].apply(', '.join).reset_index()

# 合并到df1
final_df = pd.merge(df1, df2_aggregated, on='ErrorRow', how='left')

print(final_df)

关键代码解释

  • groupby('ErrorRow')['ErrorColumn'].apply(', '.join):按行号分组后,用', '.join把每组的错误列名称拼接成一个字符串
  • reset_index():将分组后的索引转换为普通列,避免合并时出现索引不匹配的问题
  • pd.merge(..., how='left'):左连接确保Dataframe1的所有行都被保留,即使某行在Dataframe2中没有对应错误(示例中无此情况,但该参数让代码更通用)

运行结果

ErrorRowMaterialIDDescriptionUnitCostQuantityCriticalLocationErrorColumn
3NaNPart 1NaN100falseWestMaterialID, UnitCost
4NaNPart 212NaNtrueEastMaterialID, Quantity
756779Part 325NaNfalseWestQuantity

内容的提问来源于stack exchange,提问作者TW3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:35:34