Python объединить часть двух кадров данных - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь решить следующую проблему и не могу понять, как это сделать. У меня есть два следующих образца кадра:

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'))

, но это не делает то, что мне нужно. Заранее большое спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...