我知道标题很奇怪。但我不知道如何简明扼要地表达这个问题。
假设我有一个DataFrame
,有两列,如下所示
A B
0 1 a
1 2 b
2 1 a
3 3 c
4 3 c
5 4 d
6 1 b
列A和B是一对多关系。我想删除满足此条件的所有行:对于A列中每个在B列中有多个值的值,如果B列中的值总数不是最大值,则将删除这些行。但是,如果A列中的一个值仅对应于B列中的一个值,或者该值属于最大总计数,则不会删除这些行。别担心,最大计数是唯一的
在本例中,第六项将被删除,因为它不是A
中唯一值1
的最大值。结果就是这样
A B
0 1 a
1 2 b
2 1 a
3 3 c
4 3 c
5 4 d
有什么有效的解决办法吗?我已经尝试了以下步骤:
1.使用nunique
筛选列A和B中的重复值
2.使用B中的多个值获取A中的所有值
3.根据带有count_values
和nlargest
的B列进行计数
4.检查最大值以了解B的值
5.筛选满足值A(在步骤2中)和B(在步骤4中)的行
我觉得步骤太复杂了,我得做手工检查。有更好的解决办法吗
这是一个棘手的问题,请参见评论中的解释。如果您需要更多解释,请在评论中告诉我:
相关问题 更多 >
编程相关推荐