Это , а не тривиальная проблема, потому что DataFrames не предназначены для работы с изменяемыми объектами, такими как списки, наборы или диктовки.
Вы можете определить индекс совпадения и соответственно заменить.
m = [v == [4, 5] for v in df['a']]
df.loc[m, 'a'] = 4.5
df
a
0 1
1 2
2 3
3 4.5
4 [apple, pear]
Аналогичная процедура применяется для ['apple', 'pair']
. Вы можете создать функцию из этого, если хотите:
def replace(df, col, key, val):
m = [v == key for v in df[col]]
df.loc[m, col] = val
replace(df, 'a', [4, 5], 4.5)
replace(df, 'a', ['apple', 'pear'], 'apple')
df
a
0 1
1 2
2 3
3 4.5
4 apple
Примечание: функция работает на месте.