Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PythonDataFrame导入多个Excel文件-坚持将文件名添加到Dataframe_Python_Excel_Pandas - Fatal编程技术网

PythonDataFrame导入多个Excel文件-坚持将文件名添加到Dataframe

PythonDataFrame导入多个Excel文件-坚持将文件名添加到Dataframe,python,excel,pandas,Python,Excel,Pandas,我正在尝试导入给定文件夹中的所有文件,并且所有文件中的一个工作表信息应转到一个数据帧-即完成 我现在遇到的问题是,从一个工作簿导入每个数据帧时,在附加到该工作表的主数据帧之前,此数据帧应与已导入的文件名连接 import os import pandas as pd path = "C:/backup/vp/apr 11 2018 and related files/All Files/" #print(os.listdir(path)) all_files = [path+file for

我正在尝试导入给定文件夹中的所有文件,并且所有文件中的一个工作表信息应转到一个数据帧-即完成

我现在遇到的问题是,从一个工作簿导入每个数据帧时,在附加到该工作表的主数据帧之前,此数据帧应与已导入的文件名连接

import os
import pandas as pd

path = "C:/backup/vp/apr 11 2018 and related files/All Files/"
#print(os.listdir(path))

all_files = [path+file for file in os.listdir(path)]
#print(all_files)

all_files = [file for file in os.listdir(path)]
#print(all_files)

accepted_extensions = ["xlsx"]
xlsx_extension_file1 = [fn for fn in os.listdir(path) if fn.split(".")[-1] in accepted_extensions]
#print(xlsx_extension_file)
xlsx_extension_file = [path+fn for fn in os.listdir(path) if fn.split(".")[-1] in accepted_extensions]
#print(xlsx_extension_file)
df1= pd.DataFrame()
df2= pd.DataFrame()
for file in xlsx_extension_file:
    print(file)
    data = pd.ExcelFile(file)
    #df= pd.DataFrame()
    try:
        df1 = df1.append(data.parse("vInfo",header=0),ignore_index=True)
        #df1frame('FileName')=df1.fill
        #df1 = df1[df1['Host'].str.contains('nl03esx141ccpv1')]
        df2 = df1.append(data.parse("vDatastore",header=0),ignore_index=True)
        #df2 = df2[df2['Name'].str.contains('bb2')]
        #df1['filename'] = os.path.basename(file)
        #df1.append(df1['filename'])
        #df2['filename'] = os.path.basename(file)
        #df2.append(df2['filename'])
        #print(frame.head())
    except:
        pass
#print(df1)
#print(df2)
writer = pd.ExcelWriter('output1.xlsx')
df1.to_excel(writer, 'vInfo')
df2.to_excel(writer, 'vDatastore')
#df1.to_html('html14apr2018vInfo.html')
input()
考虑为文件名添加列。此外,考虑使用列表来收集所有数据帧,然后在端部连接在一起,而不是在循环中扩展相同的主数据文件:

...
df1_list = []
df2_list = []

for file in xlsx_extension_file:
    print(file)
    data = pd.ExcelFile(file)

    try:
        df1_list.append(data.parse("vInfo",header=0).assign(filename=file))
        df2_list.append(data.parse("vDatastore",header=0).assign(filename=file))

    except:
        pass

df1 = pd.concat(df1_list, ignore_index = True)
df2 = pd.concat(df2_list, ignore_index = True)
...
考虑为文件名添加列。此外,考虑使用列表来收集所有数据帧,然后在端部连接在一起,而不是在循环中扩展相同的主数据文件:

...
df1_list = []
df2_list = []

for file in xlsx_extension_file:
    print(file)
    data = pd.ExcelFile(file)

    try:
        df1_list.append(data.parse("vInfo",header=0).assign(filename=file))
        df2_list.append(data.parse("vDatastore",header=0).assign(filename=file))

    except:
        pass

df1 = pd.concat(df1_list, ignore_index = True)
df2 = pd.concat(df2_list, ignore_index = True)
...