如何将映射字典内空值、Null、NaN、'-'等无效值批量替换为0
空值字典批量清洗解决方案
报错原因
fillna 是Pandas对象(Series/DataFrame)的专属方法,你直接对Python原生字符串、数值类型调用该方法,自然会触发'str' object has no attribute 'fillna'报错。
实现逻辑
你需要先自定义空值匹配规则,覆盖你提到的4类待替换值:''、'-'、None(null)、NaN,再遍历所有州的字典对象批量替换即可,修改会永久生效。
完整代码示例
import numpy as np # 自定义空值判断规则,覆盖4类待替换值 def is_target_empty(val): # 匹配null/None if val is None: return True # 匹配空字符串、横杠 if isinstance(val, str) and val in ("", "-"): return True # 匹配NaN if isinstance(val, (int, float, np.number)) and np.isnan(val): return True return False # 遍历州列表批量处理所有映射对象 for state in state_list: current_data = miles_map[state].t5_data for key, value in current_data.items(): if is_target_empty(value): current_data[key] = 0
验证方法
处理完成后可直接取值验证替换结果:
print(miles_map['California'].t5_data['valid_unmapped']) # 输出为0即替换成功
内容的提问来源于stack exchange,提问作者gwydion93
相关产品推荐
相关产品推荐

