Home > database >  add a new column to a serie pandas with condition
add a new column to a serie pandas with condition

Time:01-21

I have a dataframe called 'erm' like this: enter image description here

I would like to add a new column 'typeRappel' xith value = 1 if erm['Calcul'] has value 4. This is my code:

# IF ( calcul = 4 ) TypeRappel = 1.
# erm.loc[erm.Calcul = 4, "typeRappel"] = 1
#erm["typeRappel"] = np.where(erm['Calcul'] = 4.0, 1, 0)
# erm["Terminal"] = ["1" if c = "010" for c in erm['Code']]
# erm['typeRappel'] = [ 1 if x == 4 for x in erm['Calcul']]

import numpy as np
import pandas as pd

erm['typeRappel'] = [ 1 if x == 4 for x in erm['Calcul']]

But this code send me an error like this: enter image description here

What can be the problem ??

# IF ( calcul = 4 ) TypeRappel = 1.
# erm.loc[erm.Calcul = 4, "typeRappel"] = 1
#erm["typeRappel"] = np.where(erm['Calcul'] = 4.0, 1, 0)
# erm["Terminal"] = ["1" if c = "010" for c in erm['Code']]
# erm['typeRappel'] = [ 1 if x == 4 for x in erm['Calcul']]

import numpy as np
import pandas as pd

erm['typeRappel'] = [ 1 if x == 4 for x in erm['Calcul']]

CodePudding user response:

You can achieve what you want using lambda

import pandas as pd

df = pd.DataFrame(
    data=[[1,2],[4,5],[7,8],[4,11]],
    columns=['Calcul','other_col']
)
df['typeRappel'] = df['Calcul'].apply(lambda x: 1 if x == 4 else None)

This results in

Calcul other_col typeRappel
1 2 NaN
4 5 1.0
7 8 NaN
4 11 1.0

CodePudding user response:

You have 2 way for this

first way:

use from .loc method because you have just 1 condition

df['new']=None
df.loc[df.calcul.eq(4), 'new'] =1

Second way: use from numpy.select method

import numpy as np
cond=[df.calcul.eq(4)]
df['new']= np.select(cond, [1], None)

  • Related