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

Pandas DataFrame如何清空与上一行ColA、ColB重复的当前行列值

Pandas 相邻重复列值清空实现方案

以下是无需手动遍历的高效实现,完全规避索引越界问题:

第一步:构造测试数据

import pandas as pd

# 构建示例DataFrame
df = pd.DataFrame({
    "ColA": ["Apple", "Apple", "Apple"],
    "ColB": ["Fruit", "Fruit", "Arrow"],
    "ColC": ["Food", "Pie", "Story"]
})

第二步:核心逻辑实现

利用Pandas内置的shift()方法将数据下移一行,直接批量对比当前行与上一行的列值,相同则置为空:

# 判断ColA、ColB同时与上一行相等的行,将对应两列置为空字符串
df.loc[
    (df["ColA"] == df["ColA"].shift(1)) & (df["ColB"] == df["ColB"].shift(1)),
    ["ColA", "ColB"]
] = ""

输出验证

打印结果即可得到预期输出:

ColA   ColB  ColC
0  Apple  Fruit  Food
1                Pie
2  Apple  Arrow  Story

原循环方案报错原因

之前遍历出现索引越界,是因为循环时取当前行的下一行做对比,遍历到最后一行时,下一行索引超出了DataFrame的总长度,所以抛出异常。使用内置shift()方法不需要手动处理索引边界,运行效率也远高于自定义循环。
如果需要保留空值格式而非空字符串,将代码中的""替换为pd.NA即可。

内容的提问来源于stack exchange,提问作者John Taylor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:39:02