You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:22:16