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

如何基于指定列将一个DataFrame的列追加到另一个DataFrame?

问题:基于Unique列匹配合并DataFrame列

我有两个DataFrame:

df1

Srno, Unique, %count, TotalCount
1,     A   , 35%,    89
2,     B   , 40%,    65           
3,     C   , 42%,    42         
4,     D   , 15%,    80

df2

Srno, Unique, %count, TotalCount, Values
1,     B   ,       ,           ,40
2,     A   ,       ,           ,45
3,     D   ,       ,           ,56  
4,     C   ,       ,           ,60       

我需要基于Unique列,将df1中的%count和TotalCount列匹配到df2中。

我尝试了这段代码,但没得到预期结果:

df2['%count'] = df1[df1['Unique'].isin(df2['Unique'])]['%count'].values

期望输出:

Srno, Unique, %count, TotalCount, Values
1,     B   , 40%  ,    65       ,40
2,     A   , 35%  ,    89       ,45
3,     D   , 15%  ,    80       ,56  
4,     C   , 42%  ,    42       ,60      

可复现的代码示例:

import pandas as pd

df1 = pd.DataFrame(
    {
        'Srno': [1, 2, 3, 4],
        'Unique': ['A', 'B', 'C', 'D'],
        r'%count': ['35%', '40%', '42%', '15%'],
        'TotalCount': [89, 65, 42, 80],
    }
)


df2 = pd.DataFrame(
    {
        'Srno': [1, 2, 3, 4],
        'Unique': ['B', 'A', 'D', 'C'],
        r'%count': ['', '', '', ''],
        'TotalCount': ['', '', '', ''],
        'Values': [40, 45, 56, 60],
    }
)

expected_output = pd.DataFrame(
    {
        'Unique': ['B', 'A', 'D', 'C'],
        r'%count': ['40%', '35%', '15%', '42%'],
        'TotalCount': [65, 89, 80, 42],
        'Values': [40, 45, 56, 60],
    }
)

解决方法

你之前的代码问题在于,isin仅筛选出df1中存在于df2的行,但未按df2的Unique顺序匹配,导致赋值时顺序错位。以下两种方法可以解决问题:

方法1:使用merge(推荐)

直接基于Unique列合并,保留df2原有结构与顺序:

# 提取df1中需要匹配的列
df1_subset = df1[['Unique', '%count', 'TotalCount']]
# 合并到df2,保留df2的所有行
df2 = df2.drop(['%count', 'TotalCount'], axis=1).merge(df1_subset, on='Unique', how='left')

方法2:使用map

通过字典映射实现精准匹配:

# 构建Unique到对应列的映射字典
count_map = df1.set_index('Unique')['%count'].to_dict()
total_map = df1.set_index('Unique')['TotalCount'].to_dict()

# 赋值到df2
df2['%count'] = df2['Unique'].map(count_map)
df2['TotalCount'] = df2['Unique'].map(total_map)

两种方法都能得到预期输出,merge适合复杂多列匹配场景,map则更轻量化。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:12:40