Как получить предмет из второго ДФ, если между ними есть совпадение - PullRequest
0 голосов
/ 02 ноября 2018

Возможно, на этот вопрос уже есть ответ, но мне не удалось его найти.

Я хочу получить элементы из второго фрейма данных, которые будут добавлены в новый столбец в первом фрейме данных, если есть совпадение между обоими фреймами данных

Здесь я показываю некоторые примерные данные, очень похожие на случай, с которым я сталкиваюсь.

import pandas as pd
import numpy as np
a = np.arange(3).repeat(3)
b = np.tile(np.arange(3),3)

df1 = pd.DataFrame({'a':a, 'b':b})

    a   b
0   0   0
1   0   1
2   0   2
3   1   0
4   1   1
5   1   2
6   2   0
7   2   1
8   2   2

a2 = np.arange(1, 4).repeat(3)
b2 = np.tile(np.arange(3),3)
c = np.random.randint(0, 10, size=a2.size)
df2 = pd.DataFrame({'a2':a2, 'b2':b2, 'c':c})


  a2    b2  c
0   1   0   3
1   1   1   1
2   1   2   9
3   2   0   5
4   2   1   8
5   2   2   4
6   3   0   1
7   3   1   6
8   3   2   1

Желаемый результат должен быть похож на

    a   b  c
0   0   0 nan
1   0   1 nan
2   0   2 nan
3   1   0 3
4   1   1 1
5   1   2 9
6   2   0 5
7   2   1 8
8   2   2 4

К сожалению, я все равно не смог придумать, как ее решить.

1 Ответ

0 голосов
/ 02 ноября 2018

Использовать merge с левым соединением и переименовывать имена столбцов:

df = df1.merge(df2.rename(columns={'a2':'a', 'b2':'b'}), on=['a','b'], how='left')
print (df)
   a  b    c
0  0  0  NaN
1  0  1  NaN
2  0  2  NaN
3  1  0  3.0
4  1  1  5.0
5  1  2  0.0
6  2  0  2.0
7  2  1  6.0
8  2  2  2.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...