如何基于stacode列合并两个结构不同的Pandas DataFrame
解决Pandas DataFrame合并问题
你的代码报错核心原因是right_on参数传入了列表,但left_on是单个列,两边的关联键数量不匹配——合并只需要基于共有的stacode列,不需要把pga_sta也作为关联键。
另外,为了避免合并后引入latitude、longitude这类不需要的列,建议先从df2中提取需要的stacode和pga_sta列,再执行合并。
正确代码示例
如果需要保留df1的所有行,同时匹配df2中对应stacode的pga_sta值(没有匹配的会显示NaN),用左连接:
# 先提取df2的必要列,避免引入多余数据 df2_filtered = df2[['stacode', 'pga_sta']] # 基于stacode列合并 new_df = df1.merge(df2_filtered, on='stacode', how='left')
如果需要保留两个表中所有的stacode记录(不管两边是否都存在),用外连接:
df2_filtered = df2[['stacode', 'pga_sta']] new_df = df1.merge(df2_filtered, on='stacode', how='outer')
结果说明
- 左连接后,new_df会包含df1的所有原有列,加上匹配到的
pga_sta列,df1中没有对应df2 stacode的行,pga_sta会填充为NaN - 外连接会包含两边所有的stacode记录,df1中没有的stacode行,原有列会填充NaN;df2中没有的stacode行,
pga_sta会填充NaN
内容的提问来源于stack exchange,提问作者Murat B.
相关产品推荐
相关产品推荐

