объединение файла Excel и текстового файла с похожей работой - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть файл Excel, который содержит такие данные:

Name    Job
Damian  Engineer
Rose    Musician
Eric    Dancer

Я хочу объединить это с текстовым файлом со строками с одинаковым заданием:

25, Engineer
26, Dancer

Таким образом, окончательный результат будет:

Name    Job         Age
Damian  Engineer    25
Eric    Dancer      26

Я написал что-то для начала, но я не уверен, как получить окончательный вывод

xls = pd.read_excel(excel_file)
    excel_dict = xls.astype(str).to_dict('list')
    with open('hello.txt', 'rb') as f1:
        csv_reader = csv.reader(f1)
        for row in csv_reader:
            job = row[1]
            if job in excel_dict['Job']:
                excel_dict['Age'] = row[0]

Не могли бы вы мне помочь, как достичь конечного результата выше? Я использую pandas для чтения файла excel и csv для чтения текстового файла.

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

панда имеет функцию merge. Это предполагает, что у вашего csv есть заголовки, если нет, вы можете их предоставить или использовать left_on и right_on

xls = pd.read_excel(excel_file)
other_file = pd.read_csv('hello.txt', sep=',')
xls = xls.merge(other_file, on='Job')
0 голосов
/ 08 ноября 2018

Это будет работать для вас. Вы должны удалить столбец «Задание» или удалить пробелы из текстового файла между столбцами.

import pandas as pd

xls = pd.read_excel('sample2.xlsx')

csv_df = pd.read_csv('sample.txt', header=None)
csv_df.columns = ['Age', 'Job']
csv_df['Job'] = csv_df['Job'].map(str.strip)
xls = xls.merge(csv_df, on='Job')

print(xls)
0 голосов
/ 08 ноября 2018

Попробуйте это:

In [1411]: excel_df = pd.read_excel('myexcel.xlsx')

In [1412]: excel_df
Out[1412]: 
       Name       Job
0  Damian    Engineer
1  Rose      Musician
2  Eric        Dancer


In [1415]: txt_df = pd.read_csv('hello.txt', header=None)
In [1418]: txt_df.columns = ['Age', 'Job']

In [1419]: txt_df
Out[1419]: 
   Age        Job
0   25   Engineer
1   26     Dancer

In [1447]: pd.merge(excel_df, txt_df, on='Job')
       Name       Job  Age
0  Damian    Engineer   25
1  Eric        Dancer   26
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...