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

Python的for循环中if语句无输出,如何按城市统计visit_counts访问量总和?

问题原因分析与解决方案

原有代码问题点

  • 遍历逻辑错误:仅逐行判断城市名称,但求和时直接对整列访问量字段求和,计算的是全表总访问量而非对应城市的访问量总和
  • 触发匹配无结果:大概率是city字段值存在前后空格、大小写差异、拼写偏差(比如代码中写的Batle Ground大概率是拼写错误,正确拼写为Battle Ground)
  • 输出逻辑不合理:每匹配到一次对应城市就会打印一次全表总和,会出现大量重复输出

修复方案

1. 原有for循环写法修正

如果要保留遍历写法,需要同时取每一行的城市和对应访问量,逐行累加:

# 初始化各城市访问量总和
wl_sum = 0
l_sum = 0
d_sum = 0
bg_sum = 0

# 同时遍历城市和对应访问量
for city, count in zip(visits_19['city'], visits_19['raw_visit_counts']):
    if city == 'West Lafayette':
        wl_sum += count
    elif city == 'Lafayette':
        l_sum += count
    elif city == 'Dayton':
        d_sum += count
    elif city == 'Battle Ground':
        bg_sum += count

# 遍历完成后统一打印结果
print(f"West Lafayette访问总和:{wl_sum}")
print(f"Lafayette访问总和:{l_sum}")
print(f"Dayton访问总和:{d_sum}")
print(f"Battle Ground访问总和:{bg_sum}")

2. 推荐pandas groupby写法(已验证可行)

pandas内置的分组求和方法不需要手动写循环判断,代码更简洁效率更高:

import pandas as pd

# 按城市分组直接求和
city_visit_total = df.groupby('city')['visit_counts'].sum()
print(city_visit_total)

# 单独获取某城市的访问量,不存在时返回0避免报错
wl_total = city_visit_total.get('West Lafayette', 0)

匹配失败排查方法

如果if条件始终不触发,先执行以下代码检查city字段的实际值:

# 打印所有唯一城市值,排查空格、大小写、拼写问题
print(df['city'].unique())
# 若存在前后空格可先清洗字段
df['city'] = df['city'].str.strip()

内容的提问来源于stack exchange,提问作者Dana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:36:00