Add new column in Pandas DataFrame Python

139,416

You just do an opposite comparison. if Col2 <= 1. This will return a boolean Series with False values for those greater than 1 and True values for the other. If you convert it to an int64 dtype, True becomes 1 and False become 0,

df['Col3'] = (df['Col2'] <= 1).astype(int)

If you want a more general solution, where you can assign any number to Col3 depending on the value of Col2 you should do something like:

df['Col3'] = df['Col2'].map(lambda x: 42 if x > 1 else 55)

Or:

df['Col3'] = 0
condition = df['Col2'] > 1
df.loc[condition, 'Col3'] = 42
df.loc[~condition, 'Col3'] = 55
Share:
139,416
Santiago Munez
Author by

Santiago Munez

Updated on June 04, 2020

Comments

  • Santiago Munez
    Santiago Munez almost 4 years

    I have dataframe in Pandas for example:

    Col1 Col2
    A     1 
    B     2
    C     3
    

    Now if I would like to add one more column named Col3 and the value is based on Col2. In formula, if Col2 > 1, then Col3 is 0, otherwise would be 1. So, in the example above. The output would be:

    Col1 Col2 Col3
    A    1    1
    B    2    0
    C    3    0
    

    Any idea on how to achieve this?

  • Santiago Munez
    Santiago Munez over 10 years
    Awesome. Thank you very much for your advice. I have tried this and it's working!
  • Payne
    Payne about 8 years
    Can I use df['col4'] = df['col2', 'col1'].map(lambda x: 20 if x > 1 elif x > 10 x:40 else 100)
  • VMAtm
    VMAtm almost 8 years
    @Payne, no, this wouldn't work, only for exact one column
  • Payne
    Payne almost 8 years
    I have a problem with date not serializable in JSON output. I have several date range
  • Abdul Rehman
    Abdul Rehman about 6 years
    Hi @VMAtm, how can I use multiple conditions to add a new column? For example, if I have first both columns with numeric values and I want to use conditions as if col1 > 2 and col2 > 1. So, for this scenario how can I utilize above lambda solution? Help me, please!
  • VMAtm
    VMAtm about 6 years
    @AbdulRehman If you have a new question, ask it, do not use comments for discussion
  • Abdul Rehman
    Abdul Rehman about 6 years
    Hi @VMAtm, sure, i have posted a question, stackoverflow.com/q/49586471/7644562 Can you take a look, please!