我知道这在数据库软件中是可能的,但有什么方法可以在 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
