根据条件使用前一行值的有效方法

问题描述 投票:0回答:1

我有如下数据框。

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)对于每组标志的第一行,'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
python-3.x
1个回答
0
投票

这里是使用普通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)

© www.soinside.com 2019 - 2024. All rights reserved.