如何用Pandas统计列中失败次数并避免无失败时的报错?
解决Pandas统计测试结果时无失败记录报错的问题
方法一:使用Series的get()方法(推荐)
value_counts()返回的是Pandas Series对象,用get()方法可以指定键不存在时的默认值,直接避免KeyError:
import pandas as pd df = pd.read_csv('myfile.csv') # 先一次性统计所有状态数量,避免重复计算 status_counts = df['Status'].value_counts() # 存在'passed'就取对应值,不存在则返回0 pass_res = status_counts.get('passed', 0) # 同理处理'failed' fail_res = status_counts.get('failed', 0)
方法二:显式判断键是否存在
先检查目标状态是否在统计结果的索引中,再决定取值逻辑:
import pandas as pd df = pd.read_csv('myfile.csv') status_counts = df['Status'].value_counts() pass_res = status_counts['passed'] if 'passed' in status_counts else 0 fail_res = status_counts['failed'] if 'failed' in status_counts else 0
原代码报错原因
当CSV中没有failed记录时,value_counts()的结果里不会包含failed这个索引,直接用['failed']访问会触发KeyError。以上两种方法都能规避这个问题,同时保证无对应状态时计数为0。
内容的提问来源于stack exchange,提问作者PChao
相关产品推荐
相关产品推荐

