首页 > 解决方案 > 在一列中选择具有不同值的变量

问题描述

我有一个看起来与这个相似的数据框:

Shop   Person  Region 
Shop1  A       North  
Shop2  B       South
Shop3  C       East
Shop4  A       West
Shop5  A       West

我想从我的代码中检查是否有一个人,其商店位于两个区域(因此对于 A 人来说,他们位于区域北部和西部)。当代码检查它们在两个区域中时,它应该选择更多商店所在的区域并保留这些商店并从同一个人那里删除剩余的商店。如果两个地区的商店数量相同,则从一个地区删除商店(但也许我会自己弄清楚:))所以在这种情况下:

Shop   Person  Region   
Shop2  B       South
Shop3  C       East
Shop4  A       West
Shop5  A       West

它应该删除shop1,因为它是这个人在北区唯一的一个。我想保留人们的商店,他们只在一个地区有商店(所以人 B 和 C)。

如果有任何建议,我将不胜感激,我只编程了几个月,我想不出聪明的解决方案来解决这个问题。谢谢!

标签: pythonselectdrop

解决方案


df.merge(df.groupby(['Person', 'Region']).count().sort_values(by='Shop').groupby(level=0).tail(1).reset_index().drop(columns='Shop'))

输出

    Shop    Person  Region
0   Shop2   B       South
1   Shop3   C       East
2   Shop4   A       West
3   Shop5   A       West

推荐阅读