找到主键相同但其他列不同的行
时间: 2024-09-25 21:02:05 浏览: 29
MySQL索引之主键索引
5星 · 资源好评率100%
在Python中,如果你有一个包含多个列的数据集,比如DataFrame,你可以使用pandas库来找出那些主键(通常用作索引或ID列)相同但其他列有不同值的行。这里是一个基本的方法:
```python
import pandas as pd
# 假设你有一个名为df的DataFrame,其中'ID'列是主键
df = ... # 你的DataFrame数据
# 使用duplicated()函数查找重复的主键
duplicates = df.duplicated(subset=['ID'], keep=False) # 'keep=False'表示保留所有重复项
# 再次筛选出除了主键外其他列不完全相同的行
unique_duplicates = df[duplicates & (df != df.iloc[:, df.columns != 'ID']).all(1)]
print(unique_duplicates)
```
这段代码首先检查了ID是否重复(`duplicated()`),然后选择了那些ID重复并且除ID以外所有列都不全为相同值的行(`df != df.iloc[:, df.columns != 'ID'].all(1)`)。`all(1)`确保每一行的非ID列都至少有一个不同的值。
阅读全文