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

Pandas两个DataFrame基于列B合并输出A、B、C三列问题求解

问题根因
  • pd.concat是按行索引对齐做横向拼接,不会根据指定列值做关联匹配,自然无法实现按公共列B合并的需求,还会因为两个表都有B列出现重复列名
  • 两个表的B列数据类型不统一:e表B列是浮点数类型,f表B列是字符串类型,即便用关联函数也会因为类型不一致无法正确匹配值
正确实现代码
import pandas as pd

e = [[1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0], [5.0, 6.0], [6.0, 7.0], [7.0, 8.0], [8.0, 9.0], [9.0, 10.0], [10.0, 11.0], [11.0, 12.0], [12.0, 13.0], [13.0, 14.0]]
f = [['2', '*'], ['3', '*'], ['5', '*'], ['6', '*'], ['13', '*'], ['14', '*']]
e = pd.DataFrame(e, columns=['A', 'B'])
f = pd.DataFrame(f, columns=['B', 'C'])

# 统一公共列B的数据类型
f['B'] = f['B'].astype(float)
# 以e为基准按B列左连接
result = pd.merge(e, f, on='B', how='left')
print(result)
代码说明
  • 先将f表B列的字符串类型转为和e表一致的浮点数类型,保证关联匹配时值可以对应上
  • 用pd.merge做表关联:on='B'指定按公共列B匹配,how='left'指定保留左表e的所有行,仅关联f表中B列匹配的C列值,未匹配到的C列自动填充NaN
  • 最终返回结果仅包含A、B、C三列,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 07:39:03