我有如下数据框。
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的解决方案,仅应用您定义的规则。
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)