Я пытаюсь решить следующую проблему и не могу понять, как это сделать. У меня есть два следующих образца кадра:
df1 = pd.DataFrame( [ [1,2,4,"string1", datetime.date(2019, 7, 24),"John Wong",1111], [10,20,30,"string2",datetime.date(2020, 1, 5), "Justin Yo", 10],
[5,2,15,"string3", datetime.date(2010, 3, 12), "Sam Connor", 222], [1,9,11,"string2", datetime.date(2019, 4, 10),"Mark Joey", np.nan] ],
columns = ["A","B","C","D","Dates","Full Name","col_with_nas"])
df2 = pd.DataFrame( [ [10,20,40,"string1"], [50,20,150,"string3"] ],
columns = ["A","B","C","D"])
Это df1:
A B C D Dates Full Name col_with_nas
0 1 2 4 string1 2019-07-24 John Wong 1111.0
1 10 20 30 string2 2020-01-05 Justin Yo 10.0
2 5 2 15 string3 2010-03-12 Sam Connor 222.0
3 1 9 11 string2 2019-04-10 Mark Joey NaN
, а это df2:
A B C D
0 10 20 40 string1
1 50 20 150 string3
Что мне нужно сделать, это заменить значения в столбце df1 A, B, C новыми значениями, доступными в df2, на основе столбца 'D'. Поэтому мой желаемый результат должен выглядеть следующим образом:
A B C D Dates Full Name col_with_nas
0 10 20 40 string1 2019-07-24 John Wong 1111.0
1 10 20 30 string2 2020-01-05 Justin Yo 10.0
2 50 20 150 string3 2010-03-12 Sam Connor 222.0
3 1 9 11 string2 2019-04-10 Mark Joey NaN
Обратите внимание, что этот новый фрейм данных все еще содержит строки со значениями "string2". Я попытался проверить документацию python, а также обнаружил подобные сообщения ( Объединить больший pandas кадр данных с указанными c значениями из подмножества ) и ( Объединить и обновить кадры данных на основе подмножество их столбцов ), но я все еще не могу понять, как это сделать. Я также попытался, например, это слияние:
df3 = pd.merge(df1, df2, left_on = 'D', right_on = 'D', how = 'outer', suffixes=('_x', '_y'))
, но это не делает то, что мне нужно. Заранее большое спасибо за помощь.