Pandas解决无False实例时value_counts取值异常问题
解决DataFrame统计False次数时无False返回异常的问题
当你用value_counts()[False]统计列中False的出现次数时,若该列没有False值,value_counts()返回的Series里不会包含False这个索引,直接通过[False]访问会返回整个Series的内容(而非预期的0)。以下是两种简单的修复方案:
方案一:使用get()方法指定默认值
Series.get()方法允许你在索引不存在时返回预设的默认值,完美适配这种场景:
A_CHECK_false_count = masterdf['A'].value_counts().get(False, 0) B_CHECK_false_count = masterdf['B'].value_counts().get(False, 0) # 无False时返回0 C_CHECK_false_count = masterdf['C'].value_counts().get(False, 0) d = {'A_CHECK_Total': [A_CHECK_false_count], 'B_CHECK_Total': [B_CHECK_false_count], 'C_CHECK_Total': [C_CHECK_false_count]} FalseCountCheck = pd.DataFrame(data=d)
方案二:直接统计False的数量
更直观的方式是直接对布尔列进行条件统计,不需要依赖value_counts():
# 方法1:判断等于False A_CHECK_false_count = (masterdf['A'] == False).sum() B_CHECK_false_count = (masterdf['B'] == False).sum() C_CHECK_false_count = (masterdf['C'] == False).sum() # 方法2:利用布尔取反(~True = False) # A_CHECK_false_count = (~masterdf['A']).sum() d = {'A_CHECK_Total': [A_CHECK_false_count], 'B_CHECK_Total': [B_CHECK_false_count], 'C_CHECK_Total': [C_CHECK_false_count]} FalseCountCheck = pd.DataFrame(data=d)
这两种方法都能确保当列中没有False时,返回值为0,不会出现异常内容。
内容的提问来源于stack exchange,提问作者Cyprus_Knolls
相关产品推荐
相关产品推荐

