如何遍历国家列表,用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
相关产品推荐
相关产品推荐

