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

如何在Pandas DataFrame中检测姓名变更但年龄未变的连续行异常

检测连续行中姓名变更但年龄未变的错误行

针对你提供的DataFrame,我们可以通过对比当前行与前一行的Name和Age字段,快速定位出"姓名变更但年龄未变"的错误行。

实现代码

import pandas as pd

# 创建示例DataFrame
data = [['tom', 10], ['tom', 10], ['sam', 23], ['sam', 23], ['sam', 23], ['alice', 23], ['alice', 30], ['alice', 30]]
df = pd.DataFrame(data, columns=['Name', 'Age'])

# 定义错误判断条件:当前行姓名≠前一行姓名,且当前行年龄=前一行年龄
error_condition = (df['Name'] != df['Name'].shift(1)) & (df['Age'] == df['Age'].shift(1))

# 筛选并输出错误行
error_rows = df[error_condition]
print(error_rows)

代码说明

  • df['Name'].shift(1):将Name列整体向下偏移一行,实现当前行与前一行的姓名对比
  • 两个条件通过&逻辑与组合,确保只有同时满足"姓名变更"和"年龄未变"的行才会被标记
  • 运行后会直接输出符合条件的错误行:
    Name  Age
    5  alice   23
    

扩展提示

如果需要保留原行号的同时更清晰展示,可以添加索引列:

error_rows_with_index = df[error_condition].reset_index(names='原行号')
print(error_rows_with_index)

输出结果:

原行号    Name  Age
0     5  alice   23

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:35:44