Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace items in column based on list

Tags:

python

pandas

I have a dataframe like so:

Date        Value
19990506    0.6
19990506    0.8
19990607    1.2
20000802    0.4

and I also have two lists like this:

list1 = ['19990506', '19990607', '20000802']
list2 = ['1999201', '1999232', '2000252']

the items in list1 coincide with the values in the column Date and I want to replace them with the items that are in list2. So in Date 19990506 is replaced with 1999201 and 19990607 is replaced with 1999232. I think I need to zip my lists to do this, but after that I am at a loss on the best way to go about it. I am showing a very simplified dataframe so simply using .replace is not efficient for me. My desired output is this:

Date      Value
1999201   0.6
1999201   0.8
1999232   1.2
2000252   0.4
like image 558
Stefano Potter Avatar asked Mar 13 '23 13:03

Stefano Potter


1 Answers

If you create a dictionary that maps from list1 to list2 then you can use Series.map:

df = pd.read_clipboard()

list1 = ['19990506', '19990607', '20000802']
list2 = ['1999201', '1999232', '2000252']

# When I read in your data I get ints in the Date column
#   so I need ints in the replacement map, if you have
#   strings then remove the int() conversions
replacement_map = {int(i1): int(i2) for i1, i2 in zip(list1, list2)}
df['Date'] = df['Date'].map(replacement_map)
df
Out[13]: 
      Date  Value
0  1999201    0.6
1  1999201    0.8
2  1999232    1.2
3  2000252    0.4
like image 66
Marius Avatar answered Mar 15 '23 04:03

Marius