python - 在一列中选择具有不同值的变量
问题描述
我有一个看起来与这个相似的数据框:
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)。
如果有任何建议,我将不胜感激,我只编程了几个月,我想不出聪明的解决方案来解决这个问题。谢谢!
解决方案
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
推荐阅读
- python - 将 python 字符串转换为逗号分隔的双引号列表
- c++ - 根据某些功能,将双精度数组有效(按时间)转换为位集
- amazon-managed-blockchain - 我可以使用 t2.micro 运行 AWS 以太坊预览版吗
- vba - 有没有办法在打开文件时包含两个文件扩展名
- ruby - 输入意外结束?
- python - 有什么方法可以将摩根指纹转换为我可以弄清楚它是什么分子的方式?
- python - Python 类@property RecursionError
- wordpress - Gatsby WordPress - Graphql 分页分类
- sdn - ovs 和 ovsk 有什么区别?
- python - python init中self的实际用途是什么?