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
Author by
Santiago Munez
Updated on June 04, 2020Comments
-
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 over 10 yearsAwesome. Thank you very much for your advice. I have tried this and it's working!
-
Payne about 8 yearsCan I use df['col4'] = df['col2', 'col1'].map(lambda x: 20 if x > 1 elif x > 10 x:40 else 100)
-
VMAtm almost 8 years@Payne, no, this wouldn't work, only for exact one column
-
Payne almost 8 yearsI have a problem with date not serializable in JSON output. I have several date range
-
Abdul Rehman about 6 yearsHi @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 abovelambda
solution? Help me, please! -
VMAtm about 6 years@AbdulRehman If you have a new question, ask it, do not use comments for discussion
-
Abdul Rehman about 6 yearsHi @VMAtm, sure, i have posted a question, stackoverflow.com/q/49586471/7644562 Can you take a look, please!