Pandas空列取特定值value_counts触发KeyError,需返回0计数
解决Pandas value_counts获取不存在值时返回0的问题
当你从DataFrame某列的value_counts()结果中访问不存在的字符串值时(比如列全为空字符串时访问'Tom'),会触发KeyError。要实现不存在时返回0计数,有两种简单方案:
方法1:使用Series的get()方法
value_counts()返回的是Pandas Series,Series的get()方法支持指定默认值,当目标索引不存在时自动返回该默认值:
import pandas as pd data = {'Name': ['', '', '', ''], 'Age': [29, 21, 19, 18]} df = pd.DataFrame(data) # 获取'Tom'的计数,不存在则返回0 tom_count = df['Name'].value_counts().get('Tom', 0) print(tom_count) # 输出:0
方法2:使用reindex()填充缺失索引
通过reindex()指定要查询的索引,并用fill_value参数设置缺失时的填充值:
tom_count = df['Name'].value_counts().reindex(['Tom'], fill_value=0).iloc[0] print(tom_count) # 输出:0
原代码报错原因
原代码直接用[]访问Series索引时,若索引不存在(比如全为空的列的value_counts()里只有空字符串的计数,没有'Tom'),Pandas会抛出KeyError。而上述两种方法都能避免这个问题,确保不存在的目标值返回0计数。
内容的提问来源于stack exchange,提问作者CK7
相关产品推荐
相关产品推荐

