У меня есть dataframe, который выглядит следующим образом:Панды dataframe - на пары строк в ведре
bucket type v
0 0 X 14
1 1 X 10
2 1 Y 11
3 1 X 15
4 2 X 16
5 2 Y 9
6 2 Y 10
7 3 Y 20
8 3 X 18
9 3 Y 15
10 3 X 14
Нужный результат выглядит следующим образом:
bucket type v v_paired
0 1 X 14 nan (no Y coming before it)
1 1 X 10 nan (no Y coming before it)
2 1 Y 11 14 (highest X in bucket 1 before this row)
3 1 X 15 11 (lowest Y in bucket 1 before this row)
4 2 X 16 nan (no Y coming before it in the same bucket)
5 2 Y 9 16 (highest X in same bucket coming before)
6 2 Y 10 16 (highest X in same bucket coming before)
7 3 Y 20 nan (no X coming before it in the same bucket)
8 3 X 18 20 (single Y coming before it in same bucket)
9 3 Y 15 18 (single Y coming before it in same bucket)
10 3 X 14 15 (smallest Y coming before it in same bucket)
Цель состоит в том, чтобы построить v_paired столбец , и следующие правила:
Ищите строки в том же ковше, что и раньше e, которые имеют противоположный тип (X vs Y), назовите этих «парных кандидатов»
Если текущая строка X, выберите мин. v из парных кандидатов, чтобы стать v_paired для текущей строки, если текущая строка равна Y, выберите max. v из парных кандидатов для v_paired для текущей строки
Заранее спасибо.
Это нехорошее решение, так как оно связано с итерацией строк. –
true, но нет другого пути ... так как вам нужно сохранить состояние ... также вы делаете группу, которая сделает вещи быстрее и легче читать ... – Eyad
вы могли бы принять мой ответ, если нет лучшего – Eyad