Эффективный метод использования предыдущего значения строки на основе условия - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть кадр данных, как показано ниже.

df = [['A',1],
        ['A',1],
        ['A',0],
        ['A',0],
        ['A',5],
        ['B',0],
        ['B',0],
        ['B',1],
        ['B',1]] 

df = pd.DataFrame(df, columns = ['flag', 'C'])
df

Создайте новую переменную E, где

1) для 1-й строки каждой группы флагов, 'E' = 'C'

2) если C> = предыдущая строка E, то E = C иначе E = предыдущая строка E

Ниже ожидаемый результат:

  flag  C  E
0    A  1  1
1    A  1  1
2    A  0  1
3    A  0  1
4    A  5  5
5    B  0  0
6    B  0  0
7    B  1  1
8    B  1  1

1 Ответ

0 голосов
/ 08 ноября 2019

Вот решение в простом Python, просто применяя определенные вами правила.

df = [['A',1],
        ['A',1],
        ['A',0],
        ['A',0],
        ['A',5],
        ['B',0],
        ['B',0],
        ['B',1],
        ['B',1]]

last_flag = ''
last_e = 0
new_list = []
for flag, c in df:
    if flag == last_flag and c < last_e:
        e = last_e
    else:
        e = c
    last_flag = flag
    last_e = e
    new_list.append([flag, c, e])

print(new_list)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...