Home > Net >  Python - KeyError: 0 Trying to create a new column in a dataframe
Python - KeyError: 0 Trying to create a new column in a dataframe

Time:10-10

I am trying to create a new column in a data frame with somes conditionals with a function, but when i run the code, i have the KeyError: 0.
This is my code:


    def createApproved(df):
        df['approved'] = np.nan
        for i in range(len(df)):
            if df['extra'][i] < 0.8:
                df['approved'] = 0
                
            elif df['G3'][i] < 10:
                df['approved'] = 0
            
            elif df['G3'][i] <= 15  and df['G3'][i] >= 10:
                df['approved'] = 1
            
            elif df['G3'][i] > 15:
                df['approved'] = 1
                df['extra'][i] = 0
    
    createApproved(GabrielPereira_mat)
    createApproved(GabrielPereira_por)
    createApproved(Mousinho_mat)
    createApproved(Mousinho_por)

CodePudding user response:

You can avoid loops and set values by conditions chained by | for bitwise OR in numpy.select and numpy.where :

 def createApproved(df):
        m1 = df['extra'] < 0.8
        m2 = df['G3'] < 10
        m3 = df['G3'].between(10,15)
        m4 = df['G3'] > 15
        
        df['approved'] = np.select([m1 | m2 | m4, m3], [0,1], default=None)
        df['extra'] = np.where(m4, 0, df['extra'])
        
        return df
        
  • Related