Python Forum
Newbie question to use lambda on multiple columns of a dataframe - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Newbie question to use lambda on multiple columns of a dataframe (/thread-7751.html)



Newbie question to use lambda on multiple columns of a dataframe - zydjohn - Jan-23-2018

data={'id': [0,1,2,3], 'A':[1.1, 1.2, 1.3, 1.4], 'B':[1.0, 1.1, 1.2, 1.3], 'C':[1.1, 1.1, 1.3, 1.3], 'D':[10.0, 20.0, 30.0, 40.0]}
df0=pd.DataFrame(data)
df1=df0.set_index('id')

def get_sum(df):
    sum1= df.apply(lambda x: x['C'] * x['D'] if x['C'] >= x['A'] else (-1.0 * x['C'] * x['D']))
    return(sum1)
Hello:
I want to write a function to return a conditional results.
The condition is:
from my dataframe df1, if the value of column 'C' is equal or greater than column 'A', then return the multiplication of column 'C' and column 'D'; if if the value of column 'C' is equal or smaller than column 'B', then return the negative multiplication of column 'C' and column 'D'; if the value of column 'C' is between column 'A' and column 'B', then return 0.0
In the above example,
I want to return the following results:
[11.0, -22.0, 39.0, -52.0]
However, I don't know how to write the 3 conditions in lambda expression; besides, my above code didn't work.
If you have other idea can do this without lambda is also OK, please advice.
Thanks,