我有一个这样的示例数据框。
animal color price
rabit red 10
turtle green 15
rabit red 12
turtle green 15
turtle green 10
sheep white 5
sheep white 5
如果animal 和color 中的值与第1 行和第3 行相同但价格不同,则返回价格不同的行。结果应该是这样的:
animal color price
rabit red 10
rabit red 12
turtle green 15
turtle green 10
谢谢你。
尝试这个 -
确保drop_duplicates()
在使用pd.duplicated
with之前使用第一个keep=False
,用于您的预期目的。
out = df.drop_duplicates()
out = out[out.duplicated(subset=['animal','color'], keep=False)]
print(out)
animal color price
0 rabit red 10
1 turtle green 15
2 rabit red 12
4 turtle green 10
注意!!:如果您drop_duplicates()
用作第二步,您会得到如下意外输出。
out = df[df.duplicated(subset=['animal','color'], keep=False)]
out = out.drop_duplicates()
print(out)
animal color price
0 rabit red 10
1 turtle green 15
2 rabit red 12
4 turtle green 10
5 sheep white 5
直观地,drop_duplicates()
删除基于所有列的df.duplicated(keep=False)
重复项,并根据给定的 2 列标记所有重复项。
场景 1:删除所有具有相同 2 列和价格的行,然后保留基于 2 列的重复项 > 这意味着您将留下具有不同价格但重复 2 列的行。
场景 2:保留所有基于 2 列重复的行(在此示例中不会删除任何内容)。然后删除价格相同的重复行。最终与在所有列中删除重复行相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句