Python中for循环仅执行1次,如何修改实现代码重复运行4次?
问题原因分析
你的代码实际上已经完整执行了4次循环,只是两处逻辑问题导致你误以为仅执行了1次:
- 每次循环读取的都是固定的
D:/input_1.txt文件,4次处理的源数据完全一致 - 每次循环都把结果写入同一个
D:/Output.txt文件,后3次的执行结果直接覆盖了前一次的输出,最终你看到的只是最后一次循环的输出结果,和执行1次的效果没有差异
修改方案
根据你的实际需求选择对应修改方式:
方案1:需要输出4份独立的结果文件
修改输出文件的命名规则,加入循环变量i做区分,避免文件覆盖:
import pandas as pd for i in range(4): input_1 = pd.read_csv('D:/input_1.txt', sep='\t') input_pivot = input_1.pivot_table(index = ['Year','Month'], columns=['Gender'], aggfunc={ 'Total_sales':'sum', 'Total_profit':'mean' }) # 输出文件名添加序号,4次循环会分别生成Output_0.txt到Output_3.txt input_pivot.to_csv(f'D:/Output_{i}.txt', sep='\t', index=False)
注:你原代码里的
Tatal_sales、Tatal_sprofit存在拼写错误,建议核对原始字段名修改,避免后续统计报错。
方案2:需要每次循环处理不同的输入文件
如果你的4次循环分别对应4个不同的输入文件(比如input_1.txt到input_4.txt),同步修改输入文件的读取路径即可:
import pandas as pd for i in range(4): # 读取对应序号的输入文件,i从0开始所以加1对应1~4的文件名序号 input_1 = pd.read_csv(f'D:/input_{i+1}.txt', sep='\t') input_pivot = input_1.pivot_table(index = ['Year','Month'], columns=['Gender'], aggfunc={ 'Total_sales':'sum', 'Total_profit':'mean' }) input_pivot.to_csv(f'D:/Output_{i+1}.txt', sep='\t', index=False)
内容的提问来源于stack exchange,提问作者san1
相关产品推荐
相关产品推荐

