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

基于时间、纬度和经度合并DataFrame后出现NaN值的问题排查

合并DataFrame后气象数据全为NaN的排查与解决方法

出现这个问题的核心原因是你指定的三个匹配键(Latitude、Longitude、time)在两个DataFrame中没有找到可匹配的组合,导致右连接(how='right')保留了dfh的所有行,但无法从df中匹配到对应数据,最终填充为NaN。以下是具体排查和解决步骤:

1. 检查匹配键的数据类型是否一致

两个DataFrame中同一键的类型必须完全一致才能匹配,比如一个是数值型、一个是字符串型,或者时间格式不统一,都会导致匹配失败。

  • 执行以下代码查看键的类型:
    print("df的键类型:")
    print(df[['Latitude','Longitude','time']].dtypes)
    print("\ndfh的键类型:")
    print(dfh[['Latitude','Longitude','time']].dtypes)
    
  • 统一类型示例:
    • 将时间转为datetime格式:
      df['time'] = pd.to_datetime(df['time'])
      dfh['time'] = pd.to_datetime(dfh['time'])
      
    • 将经纬度转为浮点型:
      df[['Latitude','Longitude']] = df[['Latitude','Longitude']].astype(float)
      dfh[['Latitude','Longitude']] = dfh[['Latitude','Longitude']].astype(float)
      

2. 消除经纬度的精度差异

如果经纬度的小数位数不同(比如df保留6位、dfh保留3位),表面数值看起来一致,但实际存储值不同,会导致匹配失败。

  • 统一精度示例(保留3位小数):
    df['Latitude'] = df['Latitude'].round(3)
    df['Longitude'] = df['Longitude'].round(3)
    dfh['Latitude'] = dfh['Latitude'].round(3)
    dfh['Longitude'] = dfh['Longitude'].round(3)
    

3. 统一时间字段的粒度

如果df的时间包含时分秒(如2023-01-01 14:30:00),而dfh的时间仅到日期(如2023-01-01),两者无法匹配。

  • 统一时间粒度为日期:
    df['time'] = df['time'].dt.date
    dfh['time'] = dfh['time'].dt.date
    

4. 检查匹配键的列名是否完全一致

注意列名的大小写、空格等细节,比如df里是latitude(小写),dfh里是Latitude(大写),或者列名带有空格(如 Latitude),都会导致匹配失败。

  • 查看列名:
    print("df的列名:", df.columns.tolist())
    print("dfh的列名:", dfh.columns.tolist())
    
  • 重命名列名统一:
    df.rename(columns={'latitude':'Latitude', 'longitude':'Longitude'}, inplace=True)
    

5. 验证键组合是否真的存在重叠

如果以上步骤都没问题,可能是dfh的(纬度,经度,时间)组合在df中完全不存在。可以抽样验证:

# 取dfh前5行的键组合
sample = dfh[['Latitude','Longitude','time']].head(5)
# 在df中查找是否有匹配项
match_result = df[
    (df['Latitude'].isin(sample['Latitude'])) &
    (df['Longitude'].isin(sample['Longitude'])) &
    (df['time'].isin(sample['time']))
]
print("匹配到的行数:", len(match_result))

如果结果为0,说明两个数据集的键组合确实没有重叠,需要确认数据的时间范围、经纬度范围是否一致,或者数据来源是否正确。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:18:15