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

如何合并含重复列与空值的DataFrame并添加指定列

解决重复列名的DataFrame合并问题

你需要根据col_1.和col_2.两列将第一个DataFrame的col_3匹配到第二个DataFrame中,直接合并失败是因为没有明确指定匹配键,或者误将其他重复列纳入合并逻辑。以下是具体解决步骤:

步骤1:构造模拟数据(对应你的输入)

import pandas as pd
import numpy as np

# 包含col_3的源DataFrame
df_source = pd.DataFrame({
    'col_1.': [np.nan, np.nan, 'a1.', 'a3'],
    'col_2.': [np.nan, np.nan, 'a2', np.nan],
    'col_3': ['yes', 'yes', 'no', 'no']
})

# 需要添加col_3的目标DataFrame
df_target = pd.DataFrame({
    'col1.': ['a_1', 'a_3', 'a_5', 'a_7'],
    'col2.': ['a_2', 'a_4', 'a_6', 'a_8'],
    'col_1.': [np.nan, np.nan, 'a1.', 'a3'],
    'col_2.': [np.nan, np.nan, 'a2', np.nan]
})

步骤2:指定匹配键进行合并

从源DataFrame中仅提取用于匹配的col_1.、col_2.和需要添加的col_3,然后与目标DataFrame按匹配键左连接(保留目标DataFrame的所有行):

# 执行合并,确保只使用指定的列作为匹配键
result_df = pd.merge(
    df_target,
    df_source[['col_1.', 'col_2.', 'col_3']],
    on=['col_1.', 'col_2.'],
    how='left'
)

结果验证

运行后result_df将完全符合你的预期输出:

col1. col2. col_1. col_2. col_3
0   a_1   a_2    NaN    NaN   yes
1   a_3   a_4    NaN    NaN   yes
2   a_5   a_6   a1.     a2     no
3   a_7   a_8    a3    NaN    no

关键说明

  • 明确指定on参数:只将col_1.和col_2.作为匹配依据,避免其他列名干扰合并逻辑。
  • 左连接how='left':保证目标DataFrame的所有行都被保留,仅匹配源DataFrame中对应的col_3值。
  • 提前筛选源DataFrame的列:只保留必要的列,减少合并时的列名冲突风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:18:28