为什么Python for循环会将pandas数据列表重复打印n次?
问题原因
你出现重复输出的核心问题出在for循环内的打印逻辑:
- 你遍历的是
combined_csv["Zählerstand Beginn"]这个长度为157的序列,循环会执行157次 - 但每次打印时你拼接的是完整的
combined_csv['Tag']列,而不是当前循环项对应的单条Tag值。pandas中字符串和整列Series拼接时,会自动将列内的157条数据分别和前面的字符串拼接,单次循环就会输出157条结果,最终总输出就是157×157条。
修正方案
方案1:按行遍历DataFrame(逻辑直观,适合小数据量)
把原循环替换为以下代码,每次取当前行的对应字段值打印:
for _, row in combined_csv.iterrows(): print(f"Zählerstand Beginn(kWh/Tag): {row['Zählerstand Beginn']} {row['Tag']}")
如果要打印结束值,同理调整字段名即可。
方案2:用pandas向量化操作(效率更高,无需写循环)
直接通过列拼接生成所有输出内容,一次性打印:
# 打印起始值 output_begin = "Zählerstand Beginn(kWh/Tag): " + combined_csv["Zählerstand Beginn"].astype(str) + " " + combined_csv["Tag"] print(output_begin.str.cat(sep='\n')) # 打印结束值 output_end = "Zählerstand Ende(kWh/Tag): " + combined_csv["Zählerstand Ende"].astype(str) + " " + combined_csv["Tag"] print(output_end.str.cat(sep='\n'))
内容的提问来源于stack exchange,提问作者OTRAY
相关产品推荐
相关产品推荐

