如何在Pandas的value counts结果中筛选指定行并优化百分比展示
问题解决方案
一、筛选指定索引的行
你用loc结合isin()筛选失败,大概率是因为索引类型不匹配:你的DataFrame里5、4这些索引是整数类型,但你传入的筛选列表是字符串['5','4','3','2','1','0'],类型对不上自然匹配不到结果。
给你两种解决办法:
- 方法1:将筛选列表改成整数类型,直接匹配
target_indices = [5, 4, 3, 2, 1, 0] filtered_df = ratings.loc[ratings.index.isin(target_indices)]
- 方法2:先把索引转为字符串类型,再用原字符串列表筛选
# 先转换索引类型 ratings.index = ratings.index.astype(str) # 再筛选 filtered_df = ratings.loc[ratings.index.isin(['5','4','3','2','1','0'])] # 也可以一步完成 filtered_df = ratings.loc[ratings.index.astype(str).isin(['5','4','3','2','1','0'])]
二、更优雅的百分比展示方式
没必要手动乘以100再取整,用Python的字符串格式化或者pandas自带的工具就能轻松实现:
- 方法1:用
applymap批量格式化数值,生成带百分号的字符串
# 保留2位小数的百分比格式,可按需调整小数位数 formatted_df = ratings.applymap(lambda x: "{:.2%}".format(x))
- 方法2:如果是在Jupyter环境中展示表格,用
style.format更直观美观
# 同样可调整小数位数,比如{:.1%}保留1位小数 ratings.style.format("{:.2%}")
这种方式会自动完成乘100、添加百分号的操作,比手动计算更简洁,还能保证精度。
内容的提问来源于stack exchange,提问作者elksie5000
相关产品推荐
相关产品推荐

