Home > database >  How to update value in pandas data frame based on the condition?
How to update value in pandas data frame based on the condition?

Time:02-10

I need to replace specific values from the data frame based on the country level value.

df:

Country    Val1    Val2
Argentina   12      C
Argentina   23      34
Argentina   NaN     92
Argentina   -       29
Argentina   U       73
Germany     37      47
Germany     12      23
Germany     U      NaN
Germany     NaN     -
Germany     C       C

df_output:

Country    Val1    Val2
Argentina   12      92
Argentina   23      34
Argentina   NaN     92
Argentina   -       29
Argentina   23      73
Germany     37      47
Germany     12      23
Germany     37      NaN
Germany     NaN     -
Germany     37      47

I need to replace "C" and "U" Value with max Number of that column based on country.

CodePudding user response:

Create index by Country column, then test C, U by DataFrame.isin and replace if match condition by DataFrame.mask by maximal values per groups - but before convert values to numeric:

df = df.set_index('Country')

m = df.isin(['C','U'])

df1 = (df.mask(m, df.apply(pd.to_numeric, errors='coerce')
                    .groupby('Country')
                    .transform('max'))
        .reset_index())

print (df1)
     Country  Val1  Val2
0  Argentina    12  92.0
1  Argentina    23    34
2  Argentina   NaN    92
3  Argentina     -    29
4  Argentina  23.0    73
5    Germany    37    47
6    Germany    12    23
7    Germany  37.0   NaN
8    Germany   NaN     -
9    Germany  37.0  47.0

CodePudding user response:

You could try:

df['D'] = np.where((df.A=='blue') & (df.B=='red') & (df.C=='square'), 'succeed')

This answer might provide a detailed answer to the your question: Update row values where certain condition is met in pandas Update row values where certain condition is met in pandas

  • Related