Create new column with elements of the first list if value is equal to the second list elements

Question:

I have a dataset df1 with two columns :

d1=[9,9,26,28,43,43,43,44,85]
df1 = pd.DataFrame(data = d1)
df1['sl']=""

And 2 lists with the same length (but not the same length than the df1) :

list1=[9,26,28,43,44,85]
list2=[2,1,1,1,1,1,1]

I would like to add in my column ‘sl’ (df1), the values of the list2 if the value of my column 1 (of df1) is equal to the elements of the list1.

I mean, expected output for df1:

0 sl
9 2
9 2
26 1
28 1
43 1
43 1
43 1
43 1
44 1
85 1

I have tried a lot of solution before posting but without success…

Thanks a lot,

AL

Asked By: Anelor Guinet

||

Answers:

Use Series.map by dictionary created by zip by both lists:

d1=[9,9,26,28,43,43,43,44,85]
df1 = pd.DataFrame(data = d1)

list1=[9,26,28,43,44,85]
list2=[2,1,1,1,1,1]

df1['sl']= df1[0].map(dict(zip(list1, list2)))
print (df1)
    0  sl
0   9   2
1   9   2
2  26   1
3  28   1
4  43   1
5  43   1
6  43   1
7  44   1
8  85   1
Answered By: jezrael
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.