我有一个DataFrame,我想在其中删除一行(或多行),其中多个连续行具有基于不同列的值的列的相同值。在本例中,如果B为高,我希望保留B中具有最高值的行,如果B为低,则保留具有最低值的行。从本质上讲,我试图只有高,其次是低和低的高。
df = pd.DataFrame({'A': ['low', 'high', 'high', 'low', 'low','low'],
'B': [10, 70, 90, 40, 50,60]})
输出:
A B
0 low 10
1 high 70
2 high 90
3 low 40
4 low 50
5 low 60
期望:
A B
0 low 10
2 high 90
3 low 40
试图让我的头周围如何实现的逻辑,并已撞上了砖墙。
2条答案
按热度按时间ecfsfe2w1#
这里是另一种方法:
或
输出:
dsekswqp2#
下面是一个使用
groupby.apply
的快速而肮脏的方法:另一种方法可以是先找到
groupby
+max
;然后mask
“低”值,并用groupby
+min
值替换它们:输出: