如何在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
相关产品推荐
相关产品推荐

