2016-04-19 4 views
2

У меня есть dataframe так:Заменить элементы в колонке на основе списка

Date  Value 
19990506 0.6 
19990506 0.8 
19990607 1.2 
20000802 0.4 

и у меня есть два списка, как это:

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

элементы в list1 совпадают со значениями в столбец Date, и я хочу заменить их на предметы, которые находятся в list2. Таким образом, в Date19990506 заменяется на 1999201, а 19990607 заменяется на 1999232. Я думаю, что мне нужно застегнуть мои списки, чтобы сделать это, но после этого я не понимаю, как это сделать. Я показываю очень упрощенный dataframe, поэтому просто использование .replace неэффективно для меня. Мой желаемый результат заключается в следующем:

Date  Value 
1999201 0.6 
1999201 0.8 
1999232 1.2 
2000252 0.4 

ответ

4

Если создать словарь, переводящий от list1 до list2, то вы можете использовать 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 
Смежные вопросы