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

如何遍历国家列表,用Pandas生成对应多组统计输出?

遍历国家列表生成对应输出的解决方案

嘿,我看你现在卡在遍历国家列表输出对应销售数据的问题上了,我来帮你搞定它!你的现有代码存在几个小问题(比如函数和变量名冲突、循环提前终止、数据计算逻辑没放到循环里),我给你修正后的完整代码,同时解释关键调整点:

修正后的完整代码

import pandas as pd

# 读取Excel数据
df = pd.read_excel('Sales', sheet_name='unique enroll- Dataset')

# 待遍历的目标国家列表
country_lst = ['Arabian Emirates', 'Argentina', 'Australia']

# 循环遍历每个国家,逐个计算并输出结果
for country in country_lst:
    # 针对当前国家筛选2000-Q4的续约数据
    Renewal1 = df[(df["Country2"] == country) & (df["Quarter"] == "2000-Q4")]
    # 针对当前国家筛选2000-Q4且License Model为A的续约数据
    Renewal2 = df[(df["Country2"] == country) & (df["Quarter"] == "2000-Q4") & (df["License Model"].isin(['A']))]
    
    # 输出当前国家的结果(用f-string格式化更简洁)
    print(f"These numbers are for: {country}")
    print(f"#1 of Renewals per sub for Q4: {Renewal1['Count_Contract'].sum()}")
    print(f"# Non SCE of Renewals per sub for Q4: {Renewal2['Count_Contract'].sum()}")

关键调整说明

  • 移除了有问题的country函数:你之前定义的函数不仅和变量名重名,而且循环里用return会直接终止循环,只能返回第一个国家,完全达不到遍历效果。直接用for循环遍历列表就足够了。
  • 把数据计算逻辑放到循环内部:原来的Renewal1和Renewal2定义在循环外,只会用固定的单个国家值计算。现在放到循环里,每次都会针对当前遍历的国家重新筛选数据,保证结果对应正确。
  • 改用f-string格式化输出:相比原来的字符串拼接,f-string写法更直观、不易出错,当然如果你习惯原来的方式,也可以换回"字符串" + str(变量)的形式。

运行这段代码后,就能得到你期望的输出:每个国家对应3行结果,依次打印出来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:04