0

I have a dataset where I would like to map specific values to a column if the column contains a specific value.

Data

ID TYPE STAT
aa a1   y
aa a2   n
aa a3   y
bb a1   y
bb a1   n
bb b2   n

Desired

ID TYPE STAT RANGE
aa a1   y    20
aa a2   n    10
aa a3   y    5
bb a1   y    20
bb a1   n    20
bb b2   n    10

Doing

data = {
        a1:20,
        a2:10,
        a3:5,
        b2:10
      }
output = df.merge(data.rename(columns={"TYPE": "RANGE"}), how="left"))

Creating a dict and mapping/appending:

Any suggestion is appreciated

Lynn
  • 4,292
  • 5
  • 21
  • 44

1 Answers1

0
import pandas as pd
import numpy as np

def find_num(row):
    if row in data:
        return data[row]
    else:
        return np.NaN

df['RANGE'] = df['TYPE'].apply(find_num)

print(df)
Tomer S
  • 900
  • 1
  • 10
  • 21