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

Python Pandas:pd.concat()后如何对齐DataFrame行?实现类SQL左连接

问题原因与解决方案

pd.concat([df1, df2], axis=1) 是按索引对齐拼接,而非按列值匹配,这就是你得到错位结果的原因——它只会把两个DataFrame的行按索引位置硬拼在一起,完全不关心city列的实际值。

要实现类SQL的左连接效果,应该使用pd.merge(),这是pandas专门用于实现关系型数据库连接逻辑的函数。

实现代码

import pandas as pd
df1 = pd.DataFrame({ 'city':['ABC','NEW','TWIN','KING']})
df2 = pd.DataFrame({ 'city':['NEW','ABC']})

# 执行类SQL左连接,按city值匹配
joined_df = pd.merge(df1, df2, on='city', how='left', suffixes=('', '_match'))
print(joined_df)

输出结果

city city_match
0   ABC        ABC
1   NEW        NEW
2  TWIN        NaN
3  KING        NaN

关键参数说明

  • how='left':指定左连接,保留左表(df1)的所有行,匹配右表(df2)中对应的值,无匹配则填充NaN
  • on='city':指定用于匹配的键列,即两个DataFrame中共同的列名
  • suffixes:当两个表有同名列时,用后缀区分结果中的对应列,避免列名重复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:12:41