Pandas匹配两列数据出错 循环输出重复内容且信息错位求助

问题根因
你代码的核心问题是遍历逻辑错误:你单独拆分出了customerName和eta两个Series对象,遍历的时候只循环了eta列的每个日期值,每次拼接字符串时用的是包含所有客户的完整customerName列表,所以每一轮迭代都会输出所有客户的通知,且所有客户的ETA都会被替换成当前迭代的单个日期,最终就会出现“所有客户ETA相同、重复输出大量内容”的问题。
修复代码
import pandas as pd desired_width = 500 workbook = pd.read_excel('jobs2.xlsx', sheet_name="Sheet1") # 读取Excel表格 # 配置控制台输出边界 pd.set_option('display.max_columns', 100) pd.set_option('display.max_rows', 100) pd.set_option('display.expand_frame_repr', False) pd.set_option('max_colwidth', -1) # 当任务超过两周时的预设日期值 twoWeeksOuts = "25,8,2021" # 逐行遍历数据,取当前行对应的客户姓名和ETA for index, row in workbook.iterrows(): customer_name = row["Customer Name"] eta = row["ETA"] # 如需保留原英文输出,可替换为对应英文语句 print(f"主动联系任务:已致电 {customer_name},告知产品预计送达时间为 {eta.strftime('%Y年%m月%d日')},目前进度正常。我们已告知独立服务商将在产品可安装前两个工作日内与对方联系。")
修改说明
- 放弃单独拆分两列遍历的逻辑,改用
iterrows()逐行读取DataFrame内容,保证每一行的客户姓名和ETA一一对应 - 每次循环仅取当前行的两个字段值,不会出现全量客户重复输出的问题
- 改用f-string做字符串格式化,可读性更高,也能避免不同类型数据拼接时报错
- 若数据量超过1万条,可将遍历逻辑替换为
itertuples()提升运行效率
内容的提问来源于stack exchange,提问作者ImNotPsychotic
相关产品推荐
相关产品推荐

