2016-03-10 3 views
1

Я пытаюсь объединить две таблицы вместе, где одна таблица является набором данных, а другая объясняет результаты теста более подробно на основе двух ключей из первой таблицы. Данные таблицыСлияние таблиц данных данных с использованием двух ключей

results_items:

Test ID | Vehicle ID | Test Class ID | Test Result | RfR ID 
17   28    2    F   530 
22   33    2    P   548 
44   49    4    F   7003 
52   54    4    F   8553 

Второй Таблица

item_detail

RfR ID Test Class ID RfR Desc Marker      RfR Insp Man Desc   
4    1  missing        an obligatory lamp missing  
4    2  missing        an obligatory lamp missing  
5    1  damaged and function impaired  so damaged or deteriorated that its function is impaired 

Я пытаюсь объединить их с помощью внутреннего соединения на RFR ID и испытания класса ID, так что каждая строка в в первой таблице приведено описание, связанное с этим:

Test ID | Vehicle ID | Test Class ID | Test Result | RfR ID | RfR Insp Man Desc 
17   28    2    F   530  an obligatory lamp missing 
22   33    2    P   548  an obligatory lamp missing 
44   49    4    F   7003  so damaged or deteriorated that its function is impaired 
52   54    4    F   8553  so damaged or deteriorated that its function is impaired 

Я попытался с помощью следующей логики:

results_items_desc = pd.merge(
    results_items, 
    item_detail, 
    how = 'inner', 
    on = ['Test Class ID','RfR ID'] 
) 

Поскольку это то, что я хотел бы сделать в SQL, однако таблица вывода пуста. Моя единственная теория заключается в том, что это может быть что-то вроде порядка столбцов, однако это никогда не влияло на мои результаты в sql

+2

Может быть, существуют разные имена столбцов (например, 'space' в конце имени столбца). Что такое 'print results_items.columns' и' print item_detail.columns'? Или, может быть, есть разные 'dtypes' объединяющихся столбцов. Проверьте 'print results_items.dtypes' и' print item_detail.dtypes' – jezrael

+1

Вы уверены, что у вас есть общие значения в обоих столбцах в обоих dfs? вы получаете df, если вы измените 'how = 'outer''? – EdChum

+0

@jezrael похоже, что соединение работает на RfR ID, но не на идентификаторе тестового класса, если я попробую их отдельно. Я проверил типы данных, а RfR ID - int64, тогда как идентификатор тестового класса - это объекты в обеих таблицах. –

ответ

1

Таким образом, problem имеет разные types объединенных столбцов.

Раствор литья столбец string по astype:

results_items['Test Class ID'] = results_items['Test Class ID'].astype(str) 

или:

item_detail['Test Class ID'] = item_detail['Test Class ID'].astype(str) 
+0

отлично! это сработало, спасибо –

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