Update two dataframe column based on condition

Viewed 48

I Have a dataframe with columns as 'PK', 'Column1', 'Column2'. I want to update Column1 and Column2 as follows:

If Column1 > Column2 then (Column1 = Column1 - Column2) and at the same time Column2 = 0

Similarly

If Column1 < Column2 then (Column2 = Column2 - Column1) and at the same time Column1 = 0

I have tried with following but it is not giving expected result:

df["Column1"] = np.where(df['Column1'] > df['Column2'], df['Column1'] - df['Column2'], 0)
df["Column2"] = np.where(df['Column1'] < df['Column2'], df['Column2'] - df['Column1'], 0)
1 Answers

Use DataFrame.assign for avoid testing overwriten column Column1 in second line of your code:

df = pd.DataFrame({
         'Column1':[4,5,4,5,5,4],
         'Column2':[7,8,9,4,2,3],

})
print (df)
   Column1  Column2
0        4        7
1        5        8
2        4        9
3        5        4
4        5        2
5        4        3

a = np.where(df['Column1'] > df['Column2'], df['Column1'] - df['Column2'], 0)
b = np.where(df['Column1'] < df['Column2'], df['Column2'] - df['Column1'], 0)

df = df.assign(Column1 = a, Column2 = b)
print (df)
   Column1  Column2
0        0        3
1        0        3
2        0        5
3        1        0
4        3        0
5        1        0
Related