遍历字典时条件判断无输出,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
相关产品推荐
相关产品推荐

