如何检查Pandas DataFrame中两两分组的行是否列值完全相同
检查DataFrame两两分组行是否完全相同
示例DataFrame
先构造示例数据:
import pandas as pd df = pd.DataFrame([[1,2], [9,0],[3,4], [3,4]], columns=list('AB'))
输出的DataFrame如下:
A B 0 1 2 1 9 0 2 3 4 3 3 4
需求说明
已知DataFrame行数始终为偶数,需将行两两分组(第1行与第2行、第3行与第4行……第n-1行与第n行),检查每组内两行的所有列值是否完全相同。示例中第1-2行(索引0-1)列值不同,第3-4行(索引2-3)列值完全相同。
解决方案
方法1:分组后逐组对比
通过创建分组标识,将每两行划分为一组,再对每组内的两行进行全等判断:
# 生成分组标签,每两行一组 groups = df.index // 2 # 每组内比较两行是否完全相同 group_check = df.groupby(groups).apply(lambda g: g.iloc[0].equals(g.iloc[1])) print(group_check)
输出结果:
0 False 1 True dtype: bool
结果中False代表对应组的两行列值不同,True代表两行列值完全一致。
方法2:切片后逐行对比
利用索引切片分别提取偶数行和奇数行,直接逐行比较所有列:
# 提取偶数索引行(第1、3...行) even_rows = df.iloc[::2] # 提取奇数索引行(第2、4...行) odd_rows = df.iloc[1::2] # 逐组检查两行是否完全相同 group_check = (even_rows.reset_index(drop=True) == odd_rows.reset_index(drop=True)).all(axis=1) # 重置索引对齐原分组逻辑 group_check.index = even_rows.index // 2 print(group_check)
输出结果:
0 False 1 True dtype: bool
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

