Skip to main content
 首页 » 编程设计

python之选择 Pandas 中 ID 相同但值不同的行

2025年05月04日20虾米姐

我知道这在数据库软件中是可能的,但有什么方法可以在 Python Pandas 中做到这一点吗?

ID1         ID2      Value 
1209345     1203     2 
1209345     1204     3 <----- 
1209345     1205     4 
1209345     1203     2 
1209345     1204     7 <----- 
1209346     1203     1 
1209347     1204     5 

我有 ID1,与此对应,我有多个 ID2 映射到一个值。我需要找到 ID1 和 ID2 匹配但值不同的所有条目。

我当前的代码计算ID1 和ID2 的唯一组合的数量,但不考虑每个组合的唯一Value:

print(df.groupby(['ID1', 'ID2']).size()) 
 
ID1      ID2  
1209345  1203    2 
         1204    2 
         1205    1 
1209346  1203    1 
1209347  1204    1 
dtype: int64 

注意:这个问题是为删除了他的 original question 的@RohitGirdhar 发布的.我发布的解决方案不一定是唯一的或最好的;鼓励其他答案。

请您参考如下方法:

您可以使用 nunique 进行过滤和 transform :

df = df[df.groupby(['ID1', 'ID2'])['Value'].transform('nunique') > 1] 
 
print (df) 
       ID1   ID2  Value 
1  1209345  1204      3 
4  1209345  1204      7