2015-06-12 4 views
1

У меня есть 2 кадра данных разной длины. Каждый из них имеет 3 столбца id, я хотел бы передать значение из второго фрейма данных в первый, только когда все столбцы id одинаковы. Например, значение «bb» будет добавлено в новый столбец в df1 в третьей строке. Как я должен это делать?Как сопоставлять и выбирать значения из фреймов данных различной длины?

df1 = pd.DataFrame({'id1' : [1, 2, 'aa', 4, 5], 'id2': ['a', 'a', 'aa', 'd','e'], 'id3': ['p', 'r', 'aa', 'i', 't']}) 
df2 = pd.DataFrame({'id1': [ 6, 7, 6, 5, 4, 1, 'aa' ], 'id2':['f','d','c','f','b','z','aa'], 'id3':['a', 'f', 'q', 'b', 't', 't','aa'], \ 
       'value' : [5, 4,7,6, 8, 5 , 'bb']}) 
    id1 id2 id3 
0 1 a p 
1 2 a r 
2 aa aa aa 
3 4 d i 
4 5 e t 

[5 rows x 3 columns] 
    id1 id2 id3 value 
0 6 f a  5 
1 7 d f  4 
2 6 c q  7 
3 5 f b  6 
4 4 b t  8 
5 1 z t  5 
6 aa aa aa bb 

ответ

0

Вы можете просто выполнить левый стиль merge:

In [116]: 
df1.merge(df2, how='left') 

Out[116]: 
    id1 id2 id3 value 
0 1 a p NaN 
1 2 a r NaN 
2 aa aa aa bb 
3 4 d i NaN 
4 5 e t NaN 
+0

Спасибо! Кажется, очень легко! – user2993660

+0

Если мой ответ разрешил ваш вопрос, то, пожалуйста, примите его, будет пустой галочка в левом верхнем углу моего ответа, спасибо – EdChum

Смежные вопросы