如何避免Pandas DataFrame新增索引时数据重复
解决Excel新增索引时Data Type 2数据重复的问题
当前代码之所以会让Data Type 2和Data Type 1数据重复,大概率是复用了Data Type 1的数据源或赋值逻辑。要实现Row 1的Data Type 2对应[1,2]、Row 2对应[3,4],可以用以下几种直接的实现方式:
方式一:提前绑定对应数据列表
准备好Data Type 2的专属数据列表,和Data Type 1的列表索引一一对应,逐行填充时直接取同索引的元素:
from openpyxl import Workbook wb = Workbook() ws = wb.active # 定义各自的数据源 data_type1 = [[10,20], [30,40]] data_type2 = [[1,2], [3,4]] # 写表头 ws.append(["Row", "Data Type 1", "Data Type 2"]) # 逐行写入数据 for idx in range(len(data_type1)): row_num = idx + 2 # 跳过表头行 ws.cell(row=row_num, column=1, value=f"Row {idx+1}") ws.cell(row=row_num, column=2, value=str(data_type1[idx])) # 取Data Type2对应索引的数据,避免复用Type1的内容 ws.cell(row=row_num, column=3, value=str(data_type2[idx])) wb.save("result.xlsx")
方式二:动态计算目标数据(适合有规律的场景)
如果Data Type 2的数据是有规律的(比如Row N的数值是[2N-1, 2N]),可以直接通过行索引计算生成,不用提前准备完整列表:
from openpyxl import Workbook wb = Workbook() ws = wb.active ws.append(["Row", "Data Type 1", "Data Type 2"]) data_type1 = [[10,20], [30,40]] for idx in range(len(data_type1)): row_num = idx + 2 ws.cell(row=row_num, column=1, value=f"Row {idx+1}") ws.cell(row=row_num, column=2, value=str(data_type1[idx])) # 动态计算Data Type2的数值 num1 = 2 * idx + 1 num2 = 2 * idx + 2 ws.cell(row=row_num, column=3, value=str([num1, num2])) wb.save("result.xlsx")
方式三:修复原代码的重复逻辑
如果你的原代码是直接把Data Type 1的数据赋值给Data Type 2(比如类似ws.cell(..., value=data_type1_val)),只需要把赋值的数据源换成Data Type 2的即可。比如原错误代码:
# 原导致重复的代码片段 current_data = data_type1[idx] ws.cell(row=row_num, column=3, value=str(current_data))
修改为:
# 修正后 current_data = data_type2[idx] # 替换为Data Type2的数据源 ws.cell(row=row_num, column=3, value=str(current_data))
内容的提问来源于stack exchange,提问作者hacker_man_2021
相关产品推荐
相关产品推荐

