-4

I want to add a new column that has a string value based on col1 and col2. So, if the value in col1 is greater than or equal to 4 and if col2 value is greater than or equal to 4 then add 'high' to col3 in the same row. Like in the image below.

enter image description here

Babbbu95
  • 17
  • 4
  • Is that Excel? pandas dataframe? Have you tried anything? There are many answers for that in SO, did you search for any? – Tomerikoo Mar 11 '21 at 15:54
  • Does this answer your question? [pandas create new column based on values from other columns / apply a function of multiple columns, row-wise](https://stackoverflow.com/questions/26886653/pandas-create-new-column-based-on-values-from-other-columns-apply-a-function-o) – Tomerikoo Mar 11 '21 at 15:55

3 Answers3

1

Try with min() and comparison:

df['col3'] = np.where(df[['col1','col2']].min(1) >=4, 'High', 'Low')

Or since you have only two columns, you can compare directly:

df['col3'] = np.where(df['col1'].ge(4) & df['col2'].ge(4), 'High', 'Low')

Use lambda functions for that:

df['col3'] = df.apply(lambda row: 'High' if row['col1'] >=4 and row['col2'] >=4 else 'Low' ,axis=1)

output:

   col1 col2  col3
0   1    4    Low
1   2    5    Low
2   3    6    Low
3   4    7    High
4   5    2    Low

Or in another way:

array = []
for item in df.values:
  if item[0] >=4 and item[1] >=4: array.append('High')
  else: array.append('Low')

df['col3'] = array
1

Something like this should work, but it depends on the format of your data. I'm assuming it is a pandas DataFrame.

import numpy as np

df['col3'] = np.where((df['col1'] >= 4) & (df['col1'] >= 4), 'High', 'Low')
Leonardo Viotti
  • 476
  • 1
  • 5
  • 15
0
def test (row):
   if row['col1'] >= 4 and row['col2'] >= 4:
      return 'High'
   else:
      return 'Low'

df['col3'] = df.apply (lambda row: test (row), axis=1)

This is from the suggestion of @Tomerikoo, hope it is correct. But @Leonardo Viotti's answer is faster. Thanks! I have also learnt the np.where function now.

NoobTse
  • 11
  • 4