使用条件python创建变量

时间:2019-11-08 01:53:11

标签: python-3.x pandas

我有一个如下所示的熊猫数据框。

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

我可以使用迭代来做到这一点,但由于我的数据集非常庞大,我需要一种高效/矢量化的方式

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