Pandas DataFrame值不存在时如何返回0计数避免AttributeError?
解决方法
问题出在当_merge列里没有Missing_in_NSL这个值时,value_counts()返回的Series不存在这个索引,直接用属性访问会触发AttributeError。可以用以下几种方式安全获取计数,不存在时返回0:
方法1:用Series的
get()方法(推荐)
直接调用get()并指定默认值0,这是最简洁的方式:missing_nsl = missing_records._merge.value_counts().get('Missing_in_NSL', 0)同样,
missing_gmt也可以改成这种写法,保持代码风格一致:missing_gmt = missing_records._merge.value_counts().get('Missing_in_GMTLib', 0)方法2:转成字典后取值
把计数结果转成字典,再用字典的get()方法:count_dict = missing_records._merge.value_counts().to_dict() missing_nsl = count_dict.get('Missing_in_NSL', 0)方法3:预先指定所有可能的类别(适合多类别场景)
如果需要同时处理多个_merge类型的计数,可以先定义所有可能的类别,用reindex()补全缺失值为0:# 定义_merge列所有可能的取值 merge_types = ['Missing_in_GMTLib', 'Missing_in_NSL', 'both'] # 重新索引,缺失的类别填充0 count_series = missing_records._merge.value_counts().reindex(merge_types, fill_value=0) # 直接通过索引取值 missing_gmt = count_series['Missing_in_GMTLib'] missing_nsl = count_series['Missing_in_NSL']
内容的提问来源于stack exchange,提问作者JD2775
相关产品推荐
相关产品推荐

