Объединить два фрейма данных с одинаковыми именами из разных каталогов через Python - PullRequest
0 голосов
/ 03 октября 2019

У меня есть две папки в разных каталогах, которые содержат файлы Excel с одинаковыми именами. Мне нужно объединить файлы Excel, а не листы, потому что у каждого файла есть один лист с одинаковым именем. например:

d1 содержит файлы A, B, C

d2 содержит файлы A, B, E, F

Выходные данные должны содержать два файла , результат объединения A из d1 и A из d2 и результат объединения B из d1 и B из d2 .

Если в файлах d1 и d2 нет файлов с одинаковыми именами, вывод не производится.

первый кадр данных имеет несколько строк, а второй кадр данных - одну строку. Когда я запускаю этот код, он рассматривает второй фрейм данных как заголовок, а когда я устанавливаю заголовок как false, он больше не учитывает его.

import glob
import numpy as np

file_d1 = glob.glob(d1 + "/*.xlsx")
file_d2 = glob.glob(d2 + "/*.xlsx")
i=0
for file_d1 in glob.glob(d1 + "/*.xlsx"):
    fileName_d1 = os.path.splitext(os.path.splitext(os.path.basename(file_d1))[0])[0]
    for file_d2 in glob.glob(d2 + "/*.xlsx"):
        fileName_d2 = os.path.splitext(os.path.splitext(os.path.basename(file_d2))[0])[0]
        if fileName_d1 == fileName_d2:
            i+=1
            fileName_1=d1+'/'+fileName_d1+'.xlsx'
        df1 = pd.read_excel(fileName_1, header=0, index= False)
        fileName_2=d2+'/'+fileName_d2+'.xlsx'
        df2 = pd.read_excel(fileName_2, header=0, index= False)
        print(fileName_1)
        print(fileName_2)
        df = pd.DataFrame(np.concatenate([df1.values, df2.values], axis=0), columns=df2.columns)
df.to_excel('C:/Users/khouloud.ayari/Desktop/FinalResult/output'+str(i)+'.xlsx', index = True, header=False)

Что я должен сделать, чтобы получить правильный выводчто (1-й фрейм данных + 2-й фрейм данных) не наоборот?

, когда я объединил два файла, "nbr de Reboot" пропал, а "nbr de km parcourus" считалсязаголовок df.to_excel('C:/Users/khouloud.ayari/Desktop/FinalResult/output'+str(i)+'.xlsx', index = False, header=True)

вывод через консоль

1   nbr de Kilomètres parcourus  1
0       Passage en mode privé  1
1      Passage en mode public  2

вывод .xlsx

enter image description here

ожидаемый вывод: enter image description here A и B - три разных файла

PS: я использую Python 3.7 (Spyder)

1 Ответ

0 голосов
/ 04 октября 2019

Моя цель состояла в том, чтобы объединить два файла Excel с одинаковыми именами, расположенные в разных каталогах, но я не смог этого сделать, потому что некоторые данные были потеряны в процессе, поэтому я добавил заголовки в свои файлы Excel и запустил приведенный ниже код:

import os 
import pandas as pd

d2 = "C:/Users/khouloud/Desktop/d2"
d1 = "C:/Users/khouloud/Desktop/d1"

import glob
import numpy as np
file_d1 = glob.glob(d1 + "/*.xlsx")
file_d2 = glob.glob(d2 + "/*.xlsx")
i=0
for file_d1 in glob.glob(d1 + "/*.xlsx"):
    fileName_d1 = os.path.splitext(os.path.splitext(os.path.basename(file_d1))[0])[0]
    for file_d2 in glob.glob(d2 + "/*.xlsx"):
        fileName_d2 = os.path.splitext(os.path.splitext(os.path.basename(file_d2))[0])[0]
        if fileName_d1 == fileName_d2:
            i+=1
            fileName_1=d1+'/'+fileName_d1+'.xlsx'
            df1 = pd.read_excel(fileName_1, header=0, index= False)
            fileName_2=d2+'/'+fileName_d2+'.xlsx'
            df2 = pd.read_excel(fileName_2, header=0, index= False)
            df = pd.DataFrame(np.concatenate([df1.values, df2.values]), columns=df2.columns)
            print('**********************************************')
            print('1',df)
            print('**********************************************')
            df.to_excel('C:/Users/khouloud/Desktop/FinalResult/output'+str(i)+'.xlsx', index = False, header=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...