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

遍历字典时条件判断无输出,NaN值匹配问题求助

问题

以下是创建站点字典的代码:

station_dict = {}
for station in metro['start_station'].unique():
    lat_list = metro[metro['start_station'] == station]['start_lat'].unique()
    lon_list = metro[metro['start_station'] == station]['start_lon'].unique()
    if len(lat_list) == 1 and len(lon_list) == 1:
        station_dict[station] = {'lat': lat_list[0], 'lon': lon_list[0]}
        
metro.drop(columns=['start_lat', 'start_lon', 'end_lat', 'end_lon'], inplace=True)

单独访问字典键'4285'时输出:

{'lat': 'nan', 'lon': 'nan'}

但使用以下循环遍历字典时,无任何输出也不报错:

for key, value in station_dict.items():
    if value == 'nan':
        print(key)

期望输出所有lat和lon值为'nan'的键,当前在Jupyter Notebook中操作。

解决方法

问题根源

循环中的value是一个包含lat和lon的子字典,而非单个字符串'nan',直接判断value == 'nan'永远不成立,因此没有输出。

正确遍历逻辑

需要检查子字典内的lat和lon字段是否均为'nan':

for key, value in station_dict.items():
    if value['lat'] == 'nan' and value['lon'] == 'nan':
        print(key)

额外提示:处理pandas原生NaN

如果数据中的空值是pandas的NaN(而非字符串'nan'),需用pd.isna()判断:

import pandas as pd

for key, value in station_dict.items():
    if pd.isna(value['lat']) and pd.isna(value['lon']):
        print(key)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:55:27