Возврат альтернативного столбца в панде - PullRequest
0 голосов
/ 04 июня 2018

У меня есть два кадра данных.Фрейм данных A - это экспериментальный фрейм данных, который содержит список использованных вещей (вместе с датой и т. Д.).Кадр данных B является эталонным кадром данных.Кадры данных A и B имеют совпадающие номера индексов.Я хочу обновить Dataframe A с дополнительной информацией из Dataframe B, где совпадают номера индексов.

Например,

dfA

REF
ABC
DEF
DEF
XYZ 

dfB

REF VALUE
ABC 1.23
DEF 2.22
XYZ 3.33

В действительности референсный фрейм данных намного больше, чем экспериментальный фрейм данных.Я хотел бы создать новый столбец в фрейме данных A со значением из фрейма данных B на основе соответствующих ссылок.Я пробовал «находится в» и где, но несоответствие длины ряда создает ошибку.Я попытался использовать слияние, но поскольку в фрейме данных A есть повторы эталонного значения, в фрейме данных слишком много строк.Есть ли эффективный способ сделать это без создания новой серии или столбца для каждой ссылки?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы можете сделать простое join

Предполагая, что ваши индексы REF в обоих кадрах данных, вы можете просто сделать

dfA.join(dfB)

Полный код:

import pandas as pd

dfA = pd.DataFrame(['ABC', 'DEF', 'DEF', 'XYZ'], columns=['REF'])
dfB = pd.DataFrame([['ABC', 1.23], ['DEF', 2.22], ['XYZ', 3.33]], columns=['REF', 'VALUE'])

dfA = dfA.set_index('REF')
dfB = dfB.set_index('REF')

dfA.join(dfB)
0 голосов
/ 04 июня 2018

Используя map с set_index

df1['res'] = df1.REF.map(df2.set_index('REF')['VALUE'])

   REF   res
0  ABC  1.23
1  DEF  2.22
2  DEF  2.22
3  XYZ  3.33
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...