Сопоставить и получить значение из одного файла Excel в другой файл Excel в пандах - PullRequest
0 голосов
/ 06 мая 2018

У меня есть два файла Excel, я назову их: source.xlsx , output.xlsx .

Мне нужно сопоставить данные, используя Идентификатор вызывающего абонента столбец source.xlsx до svc_no столбец output.xlsx

Если совпадения нет или значение равно NULL с использованием столбца Caller ID , я могу использовать столбец adsl source.xlsx для сопоставления с port столбцом output.xlsx .

Если есть совпадение, тогда я должен игнорировать порт и написать Caller ID

Данные в source.xlsx выглядят так:

Caller ID    adsl    Comparison Result
NULL         2/12    Not Match
11111111     2/267   Match
22222222     4/243   Match
22222222     2/117   Possible Match

Данные в output.xlsx выглядят так:

svc_no              Caller ID    port    Comparison Result  
22222222                         4/243  
11111111                         2/267      
22222222                         2/117
NULL                             2/12

Мой ожидаемый вывод будет записывать данные из source.xlsx в output.xlsx :

svc_no              Caller ID    port    Comparison Result
22222222            22222222     4/243   Match
11111111            11111111     2/267   Match
22222222            22222222     2/117   Possible Match 
NULL                NULL         2/12    Not Match

Я пытался использовать:

df = read_excel('source.xlsx')
df1 = read_excel('output.xlsx')

df = df['Caller ID'].isin(df1['svc_no'])]
df['Caller ID'] = df1['Caller ID']

df1.to_excel('output.xlsx')

Но он не совпадает и записывается случайным образом.

1 Ответ

0 голосов
/ 06 мая 2018

Это один из способов.

# filter output for 2 pre-populated columns
output = output[['svc_no', 'port']]

# add duplicate column
output['Caller ID'] = output['svc_no']

# create series mapping from source
s = source.set_index(['Caller ID', 'adsl'])['Comparison Result']

# map series to output
output['Comparison Result'] = output.set_index(['svc_no','port']).index.map(s.get)

print(output)

        svc_no   port    Caller ID Comparison Result
0  2.22222e+07  4/243  2.22222e+07             Match
1  1.11111e+07  2/267  1.11111e+07             Match
2  2.22222e+07  2/117  2.22222e+07     PossibleMatch
3         NULL   2/12         NULL          NotMatch
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...