我有一个如下所示的熊猫数据框。
df = [['A',1,3],
['A',1,2],
['A',0,1],
['A',0,1],
['A',5,6],
['B',0,5],
['B',1,9],
['B',1,2],
['B',1,1]]
df = pd.DataFrame(df, columns = ['flag', 'A', 'B'])
df
现在我需要根据以下条件创建一个名为“ C”的新变量,
1)对于每组标志的第一行,'C'='A'
2)ELSE,如果A> ='C'的前一行,则'C'='A'否则'C'=上一行'C'
以下是我的预期输出:
flag A B C
0 A 1 3 1
1 A 1 2 1
2 A 0 1 1
3 A 0 1 1
4 A 5 6 5
5 B 0 5 0
6 B 1 9 1
7 B 1 2 1
8 B 1 1 1
我可以使用迭代来做到这一点,但由于我的数据集非常庞大,我需要一种高效/矢量化的方式
答案 0 :(得分:1)
您可以
df['C']=df.groupby('flag').A.cummax()
df
Out[14]:
flag A B C
0 A 1 3 1
1 A 1 2 1
2 A 0 1 1
3 A 0 1 1
4 A 5 6 5
5 B 0 5 0
6 B 1 9 1
7 B 1 2 1
8 B 1 1 1