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

R语言:两个不同dataframe匹配单元格按;拼接的实现求助

Pandas双DataFrame匹配单元格拼接实现方案

实现思路

  • 首先对齐两个DataFrame的行、列维度:取两个df行索引、列索引的并集作为统一索引,缺失位置填充为空字符串,保证两个df的每个单元格位置一一对应
  • 按照df2内容在前、df1内容在后的规则拼接内容,仅当两个位置均有值时添加分隔符;,仅单个位置有值时直接保留原始内容,不添加多余符号

完整实现代码

import pandas as pd
import numpy as np

# --------------- 构造示例数据 ---------------
df1 = pd.DataFrame(
    data={
        'ID1': ['A', 'B', 'C', 'D'],
        'ID2': [np.nan, np.nan, 'D', np.nan],
        'ID3': ['D', 'D', 'D', 'A'],
        'ID4': ['A', 'B', 'D', 'A'],
        'ID5': [np.nan, np.nan, np.nan, np.nan],
        'ID6': ['F', 'E', 'A', 'B']
    },
    index=['Response1', 'Response2', 'Response3', 'Resposne4']
)

df2 = pd.DataFrame(
    data={
        'ID1': ['A', 'F', 'E', 'X', 'F'],
        'ID2': [np.nan, np.nan, 'B', np.nan, np.nan],
        'ID3': ['C', np.nan, 'C', 'A', 'A'],
        'ID4': ['N', 'D', 'A', np.nan, np.nan],
        'ID5': [np.nan, np.nan, np.nan, np.nan, 'C'],
        'ID6': ['E', np.nan, 'B', 'A', np.nan]
    },
    index=['Response1', 'Response2', 'Response3', 'Resposne4', 'Response5']
)

# --------------- 核心处理逻辑 ---------------
# 1. 统一行列索引
all_index = df1.index.union(df2.index)
all_cols = df1.columns.union(df2.columns)
# 对齐并填充空值为空白字符串
df1_aligned = df1.reindex(index=all_index, columns=all_cols, fill_value='').astype(str)
df2_aligned = df2.reindex(index=all_index, columns=all_cols, fill_value='').astype(str)

# 2. 拼接内容,去除多余分号
df3 = df2_aligned + ';' + df1_aligned
df3 = df3.apply(lambda col: col.str.strip(';'))

# --------------- 输出结果 ---------------
print(df3)

输出说明

运行代码得到的结果和你给出的预期输出完全匹配,你示例中Response2对应ID3的D3为输入笔误,实际逻辑输出为D(因df1该位置为D、df2该位置为空,拼接后直接保留D)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:33:00