You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Python Pandas中DataFrame嵌套循环索引重复遍历的问题

解决Pandas遍历DataFrame列取值时的重复索引问题

问题原因

你的代码出现重复遍历索引的核心问题是嵌套了不必要的三层循环:

  • 最外层遍历DataFrame的列
  • 中间层遍历当前列value_counts()的索引(即各个类别)
  • 最内层遍历当前列value_counts()的所有计数值

这会导致每个类别都会和所有计数值逐一配对输出,比如某列有3个类别,就会输出9行重复结果,而非预期的3行。

修正方案1:简化循环(保留迭代逻辑)

直接同时遍历value_counts()的索引和对应计数值,避免内层多余循环:

total_data = len(data_high)
for column in data_high:
    data_type = data_high[column].value_counts()
    # 同时迭代类别(索引)和对应的计数
    for category, count in data_type.items():
        percentage = round((count / total_data) * 100, 2)
        print(f"{column}: {category} - {percentage}%")

修正方案2:用Pandas原生方法(更高效简洁)

利用value_counts(normalize=True)直接计算占比,无需手动循环计算:

for column in data_high:
    # normalize=True 返回相对频率,乘100转为百分比并保留两位小数
    percentage_df = data_high[column].value_counts(normalize=True).mul(100).round(2)
    print(f"=== {column} 类别占比 ===")
    print(percentage_df)
    print()

这种方法不仅避免了循环错误,还能利用Pandas的向量化运算提升效率,尤其适合大数据集。

内容的提问来源于stack exchange,提问作者Riswan Gani Padilah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:06:30