У меня есть DataFrame, как показано ниже,
df1
col1
0 10
1 [5, 8, 11]
2 15
3 12
4 13
5 33
6 [12, 19]
Код для генерации этого df1
:
df1 = pd.DataFrame({"col1":[10,[5,8,11],15,12,13,33,[12,19]]})
df2
col1 col2
0 12 1
1 10 2
2 5 3
3 11 10
4 7 5
5 13 4
6 8 7
Код для генерации df2
:
df2 = pd.DataFrame({"col1":[12,10,5,11,7,13,8],"col2":[1,2,3,10,5,4,7]})
Я хочу заменить элементы в df1
значениями df2
.
Если значения ряда содержат не элементы списка, я мог бы просто заменить на map
df1['res'] = df1['col1'].map(df2.set_index('col1')["col2"].to_dict())
Но теперь этот ряд содержит смешанные списки и скаляры.Как эффективно заменить элементы в списке и скалярных значениях последовательно.
Ожидаемый результат
col1 res
0 10 2
1 [5, 8, 11] [3,7,10]
2 15 15
3 12 1
4 13 4
5 33 33