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)中对应的值,无匹配则填充NaNon='city':指定用于匹配的键列,即两个DataFrame中共同的列名suffixes:当两个表有同名列时,用后缀区分结果中的对应列,避免列名重复
内容的提问来源于stack exchange,提问作者PyBoss
相关产品推荐
相关产品推荐

