我有以下数据框:
Column A Column B
MD223 GATE IN
MD223 GATE OUT
MD223 LOADED
MD223 DEPARTURE
SC511 GATE IN
SC511 LOADED
SC511 SHIPPED
KR977 DISPATCHED
KR977 LOADED
KR977 SHIPPED
我尝试做的是,对于A列中具有相同值的每一组,在B列中找到值为'LOADED'的第一行,然后返回值'LOADED'之前的行。
Column A Column B
MD223 GATE IN
MD223 GATE OUT
MD223 LOADED
SC511 GATE IN
SC511 LOADED
KR977 DISPATCHED
KR977 LOADED
我会很感激你的帮助。
更新
初始 Dataframe 在列B中有重复,但结果必须相同。
Column A Column B
MD223 GATE IN
MD223 GATE OUT
MD223 LOADED
MD223 DEPARTURE
MD223 LOADED
SC511 GATE IN
SC511 LOADED
SC511 SHIPPED
SC511 LOADED
KR977 DISPATCHED
KR977 LOADED
KR977 SHIPPED
预期成果:
Column A Column B
MD223 GATE IN
MD223 GATE OUT
MD223 LOADED
SC511 GATE IN
SC511 LOADED
KR977 DISPATCHED
KR977 LOADED
3条答案
按热度按时间gpfsuwkq1#
让我们对A列中的每个组执行
cummax
,以标记第一个LOADED
之前的所有行,然后使用loc
选择所有标记的行更新:如果
Column B
中有重复项结果
gfttwv5a2#
按
Column A
分组,并将每组切片到由LOADED
值表示的第一个有效索引:sf6xfgos3#
另一种可能的解决方案,也适用于存在重复项的情况:
输出: