如何循环按月份拆分pandas DataFrame并计算各分组的列相关系数
你的原有代码未输出预期结果有两个核心原因:
- 嵌套了多余的while循环,且循环内没有更新
selectmonth变量的逻辑,程序会一直卡在第一个月的处理流程中死循环,无法执行后续月份的处理 - 循环体内没有添加打印逻辑,计算得到的相关系数结果没有输出,最后仅执行了一行空打印,看不到任何有效内容
实现1-12月自动循环处理的代码
写法1:沿用你的手动处理逻辑套入循环
直接遍历1-12月,去掉多余的while嵌套即可:
import pandas as pd dados = pd.read_excel(r'XXX') for selectmonth in range(1, 13): dfdatas = dados.loc[dados['month'] == selectmonth] # 跳过无数据的月份,避免计算报错 if dfdatas.empty: continue print('\n Voce selecionou o mês: ', selectmonth) correlacao2 = dfdatas.corr().round(4).iloc[0] print(correlacao2)
写法2:用pandas groupby实现更高效的分组处理
无需手动判断月份筛选逻辑,自动按month字段分组遍历所有存在的月份数据:
import pandas as pd dados = pd.read_excel(r'XXX') for selectmonth, dfdatas in dados.groupby('month'): # 仅处理1-12月的合法月份数据,过滤异常值 if 1 <= selectmonth <= 12: print('\n Voce selecionou o mês: ', selectmonth) correlacao2 = dfdatas.corr().round(4).iloc[0] print(correlacao2)
内容的提问来源于stack exchange,提问作者user11843117
相关产品推荐
相关产品推荐

