0

我在不同的目录中有两个文件夹,其中包含同名的 excel 文件。我需要连接 excel 文件,而不是工作表,因为每个文件都有一张同名的工作表。例如:

d1 包含 A、B、C 文件

d2包含A、B、E、F文件

输出应包含两个文件,将d1 中的 A 和 d2中的 A 连接的结果,以及d1 中的 B 和 d2中的 B连接的结果。

如果 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)

我应该怎么做才能获得正确的输出,即(第一个数据帧+第二个数据帧)而不是相反?

当我连接这两个文件时,“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

在此处输入图像描述

预期输出: 在此处输入图像描述 A 和 B 是三个不同的文件

PS:我正在使用 Python 3.7(Spyder)

4

1 回答 1

0

我的目标是连接位于不同目录中的两个具有相同名称的 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)
于 2019-10-04T07:38:28.233 回答