Ich habe einen Datenrahmen df:

year ID  category 
1     1    0        
2     1    1        
3     1    1        
4     1    0        
1     2    0        
2     2    0        
3     2    1        
4     2    0        

Ich möchte eine neue Säule erstellen, z.

year ID  category new_category
1     1    0        0
2     1    1        1
3     1    1        1
4     1    0        1
1     2    0        0
2     2    0        0
3     2    1        1
4     2    0        1

Ich habe versucht, ob-anders zuzusteigen, aber ich bekomme die gleiche Category-Spalte

for row in range(1,df.category[i-1]):
    df['new_category'] = df['category'].replace('0',df['category'].shift(1))

Aber ich bekomme nicht die gewünschte Spalte

1
Jui Sen 3 Juni 2021 im 00:14

1 Antwort

Beste Antwort

VERSUCHEN:

df['new_category'] = df.groupby('ID')['category'].cummax()

AUSGABE:

   year  ID  category  new_category
0     1   1         0             0
1     2   1         1             1
2     3   1         1             1
3     4   1         0             1
4     1   2         0             0
5     2   2         0             0
6     3   2         1             1
7     4   2         0             1
4
Nk03 2 Juni 2021 im 21:32