如何在未知公共值时提取pop数据集中J列值相同的两行?
提取J列重复值对应的两行数据
方法一:直接筛选重复行
利用pandas的duplicated()方法,设置keep=False可标记出某列所有重复出现的行,直接筛选就能得到目标两行:
# 提取J列中所有重复的行 target_rows = pop[pop['J'].duplicated(keep=False)]
方法二:先定位重复值再提取
如果需要明确获取那个重复的公共值,再提取对应行,可以分两步操作:
# 统计J列各值的出现次数 value_counts = pop['J'].value_counts() # 找出出现次数为2的目标值 common_value = value_counts[value_counts == 2].index[0] # 根据目标值提取对应行 target_rows = pop[pop['J'] == common_value]
关于你之前的错误说明
pop.loc[pop['X'] == some_value]无法使用是因为你不知道some_value,上面的方法会自动帮你定位这个重复值pop.query('X' == 'X')返回全量数据是因为'X' == 'X'是恒成立的布尔表达式,query会返回所有行;如果想用query实现,正确写法是pop.query('J.duplicated(keep=False)'),但布尔索引的写法更直观。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

