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

如何在Pandas中按多列合并两个DataFrame(lev列无匹配值)

解决DataFrame按多坐标列合并的需求

你需要使用**外连接(outer join)**基于全部四个坐标列(time, lat, lon, lev)进行合并,这样就能保留所有存在的坐标组合,同时自动为缺失的数值列填充NaN。

代码示例

首先构造你的两个DataFrame:

import pandas as pd

df1 = pd.DataFrame({
    'time': [1],
    'lat': [10],
    'lon': [10],
    'lev': [1],
    'val1': [10]
})

df2 = pd.DataFrame({
    'time': [1],
    'lat': [10],
    'lon': [10],
    'lev': [2],
    'val2': [20]
})

执行合并:

df_total = pd.merge(df1, df2, on=['time', 'lat', 'lon', 'lev'], how='outer')

结果说明

合并后得到的df_total就是你想要的格式:

time  lat  lon  lev  val1  val2
0     1   10   10    1  10.0   NaN
1     1   10   10    2   NaN  20.0

问题原因解释

  • 若使用默认的**内连接(how='inner')**合并四列,只有四个坐标完全匹配的行才会被保留,而你的两个DataFramelev值不同,因此结果为空。
  • 若仅按time, lat, lon三列合并,pandas会将两个lev列分别命名为lev_x和lev_y,并将两行数据合并为一行,不符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:40:26