Pandas DataFrame遍历列表时使用遍历变量统计rating列指定值出现次数
实现方法
你可以通过以下两种方式动态获取遍历变量对应值的计数:
方法1:提前预计算计数(推荐,性能最优)
df['rating'].value_counts() 本质返回的是索引为列取值、值为对应计数的Pandas Series,你可以提前计算一次计数结果,遍历的时候直接用索引读取即可,避免每次遍历都重新扫描整个DataFrame浪费性能:
# 提前只计算一次全列的计数值 rating_counts = df['rating'].value_counts() mylist = ['a','b','c'] for item in mylist: # 动态获取当前item的计数,不存在则返回0 current_count = rating_counts.get(item, 0) print(f"当前处理元素:{item},rating列出现次数:{current_count}") # 此处执行你的耗时操作
如果能确定item一定存在于rating列的取值中,也可以直接写current_count = rating_counts[item]。
方法2:实时统计(不推荐,仅适合DataFrame极小的场景)
如果确实不想预计算全列计数,也可以每次遍历的时候单独统计当前item的出现次数:
mylist = ['a','b','c'] for item in mylist: current_count = (df['rating'] == item).sum() print(f"当前处理元素:{item},rating列出现次数:{current_count}") # 此处执行你的耗时操作
该方法每次遍历都要扫描整个rating列,列表越长、DataFrame越大性能损耗越严重,非特殊情况不建议使用。
原写法不生效的原因
你尝试的df['rating'].value_counts().item写法属于属性访问,Pandas会把item当成固定的属性名去查找,而不会解析为你定义的遍历变量的值,因此需要用[]索引或者get()方法传入变量动态取值。
内容的提问来源于stack exchange,提问作者ShaneK
相关产品推荐
相关产品推荐

