Let's say I have dataframe in python as defined below. The columns are X, Y,Z.
import pandas as pd
_dict={}
_dict['X'] =[90,75,95,77]
_dict['Y'] =[87,85,92,65]
_dict['Z'] =[93,90,91,78]
df=pd.DataFrame(_dict)
X | Y | Z |
---|---|---|
90 | 87 | 93 |
75 | 90 | 85 |
95 | 92 | 91 |
77 | 65 | 78 |
I have to create 2 new columns, max and max_column.
max: Will contain row-wise maximum value among X,Y,Z.
max_column: Will contain the name of the column which from which maximum value was obtained.
X | Y | Z | max | max_column |
---|---|---|---|---|
90 | 87 | 93 | 93 | Z |
75 | 90 | 85 | 90 | Y |
95 | 92 | 91 | 95 | X |
77 | 65 | 78 | 78 | Z |
Can someone help me with this?
I tried this to get maxcolumn, need help with creating max_column.
def maximum(row):
if (row['X']>row['Y']) and (row['X']>row['Z']):
return row['X']
elif (row['Y']>row['X']) and (row['Y']>row['Z']):
return row['Y']
else:
return row['Z']
df['max']=df.apply(lambda x: maximum(x), axis=1)