Ошибка при использовании функции слияния в пандах между двумя файлами Excel вместо vlookup (Key ERROR) - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь объединить файл Excel в Pandas.

import pandas as pd
import numpy as np
upload_raw = pd.read_excel(r'C:\Users\Desktop\Upload Raw Data.xlsx',
                     sheet_name = 'Upload',
                     header = 0,
                     index_col = 0,
                     )
mapping = pd.read_excel(r'C:\Users\Desktop\Mapping.xlsx',
                     sheet_name = 'Mapping',
                     header = 0,
                     index_col = 0,
                     )
display(upload_raw)
display(mapping)
upload_lookup=upload_raw.merge(mapping,on ='BRANCH',how = 'outer' )
display(upload_lookup)

Я продолжаю получать KeyError: 'BRANCH'. Я проверил значения столбцов все текстовые. Файл сопоставления имеет 3 столбца, а загрузка - около 4 столбцов.

Загрузка необработанных данных

BRANCH  DEPT    CREAT_TS    RAF_IND
AA  &CR     2018-06-22-06.48.49.601000   
03  CUE 2018-06-22-11.43.29.859000   
90  T0L 2018-06-22-11.54.52.633000   

Картографические данные:

BRANCH  UNIT    MASTER
03  MAS CoE
04  NAS ET
05  ET  ET

В сообщении об ошибке они довольно заметны.

 # validate the merge keys dtypes. We may need to coerce

# work-around for merge_asof(right_index=True)
# duplicate columns & possible reduce dimensionality

Как мне избежать этой проблемы.

Я даже пытался left_on = 'True', right_on = 'True'

left_key = 'lkey', right_key = 'rkey'. Я получаю сообщение об ошибке 'Ключ не найден

С уважением, Ren.

1 Ответ

0 голосов
/ 03 сентября 2018

Основное различие заключается в том, что я не устанавливаю 'BRANCH' в качестве индекса.

Кроме того, отображение «BRANCH» импортируется как int64, поскольку в примере есть только цифры, тогда как upload_raw «BRANCH» импортируется как объект.

upload_raw = pd.read_excel('data/2018-09-03_data_mapping.xlsx',
                           sheet_name = 'Upload',
                           header = 0)
mapping = pd.read_excel(r'data/2018-09-03_data_mapping.xlsx',
                        sheet_name = 'Mapping',
                        header = 0)
print(upload_raw)

output:
    BRANCH  DEPT    CREAT_TS    RAF_IND
0   AA  &CR 2018-06-22-06.48.49.601000  NaN
1   3   CUE 2018-06-22-11.43.29.859000  NaN
2   90  T0L 2018-06-22-11.54.52.633000  NaN

mapping['BRANCH'] = mapping['BRANCH'].astype('object')

print(mapping)

output:
    BRANCH  UNIT    MASTER
0   3   MAS CoE
1   4   NAS ET
2   5   ET  ET

upload_lookup=pd.merge(left=upload_raw, right=mapping, on='BRANCH')

print(upload_lookup)

output:
    BRANCH  DEPT    CREAT_TS    RAF_IND UNIT    MASTER
0   3   CUE 2018-06-22-11.43.29.859000  NaN MAS CoE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...