读取文件夹中的所有xlsx文件,并将文件保存在不同的DataFrames中

时间:2019-06-03 08:12:17

标签: python excel pandas dataframe

我有以下情况:

  1. 我有一个包含不同xlsx文件的文件夹,并希望保护不同数据帧(从df2 ...到dfx)中所有xlsx文件的安全。因此,对于每个文件一个数据帧。 例如:df2中的“ Hello.xlsx”,df3中的“ Bye.xlsx” ...

  2. 此后,我想在我创建的所有新数据帧上迭代函数“ df1.update(dfx)”。

df1 =我已经拥有的原始数据帧。

dfx = x代表我使用1创建的所有不同数据帧。

有一些针对1的解决方案。

在StackOverflow中,但它们都将xlsx文件放在一个大数据框中。但这不是我想要的。

谢谢:)

我现在正在“使用”的代码”:

path = os.getcwd()
files = os.listdir(path)
files

Output: 
['.ipynb_checkpoints',
 'Konsolidierungs-Tool Invoice.ipynb',
 'Test.xlsx',
 'Test1.xlsx',
 'Test2.xlsx',
 'Test3.xlsx']

files_xls = [f for f in files if f[-3:] == 'xlsx']
files_xls

output: [] --> I dont know why it is empty

2 个答案:

答案 0 :(得分:0)

我假设您已经具有保存数据帧位,而您只想做变量名部分。

您可以通过以下两种方式使用它:

  1. 使用字典作为键,将其作为dfx名称,值作为数据帧
  2. 使用exec使用名称的字符串版本并将其作为python代码执行。

第二遍,您应该阅读official docs

编辑:以下操作会将xlsx文件加载到一系列数据框中:

import pandas as pd
import os

path = os.getcwd()
files = os.listdir(path)

files_xls = [f for f in files if f[-4:] == 'xlsx']

for index. filename in enumerate(files_xls):
    exec(f"df{index}" = pd.read_excel({filename}, sheet_name=None)" )

然后您将能够看到具有变量名df0df1等的数据框。

答案 1 :(得分:0)

您可以尝试读取包含子文件夹的目录中的所有excel文件:

import pandas as pd
import xlrd
import os

# Your current directory (including python script & all excel files)
mydir = (os.getcwd()).replace('\\','/') + '/'

#Get all excel files include subdir
filelist=[]
for path, subdirs, files in os.walk(mydir):
    for file in files:
        if (file.endswith('.xlsx') or file.endswith('.xls') or file.endswith('.XLS')):
            filelist.append(os.path.join(path, file))
number_of_files=len(filelist)
print(filelist)

# Read all excel files and save to dataframe (df[0] - df[x]),
# x is the number of excel files that have been read - 1
df=[]
for i in range(number_of_files):
    try:
        df.append(pd.read_excel(r''+filelist[i]))
    except:
        print('Empty Ecxcel File!')
print(df)

输出(在我的示例中,我有4个excel文件,其中3个excel文件存储电话号码,而1个文件为空):

['D:/SOF/Book1.xlsx', 'D:/SOF/Book2.xlsx', 'D:/SOF/a\\New Text Document.xlsx', 'D:/SOF/subdir1\\Book3.xlsx']
Empty Ecxcel File!

[     Name        Phone
0    alfa  82330403045
1    fafa  82330403046
2  albert  82330403047
3    john  82330403048,      

Name    PhoneCell
0    alfa  82330403049
1    fafa  82330403050
2  albert  82330403051
3    john  82330403052,      

Name    PhoneCell
0    alfa  82330403049
1    fafa  82330403050
2  albert  82330403051
3    john  82330403052]

希望这可以为您提供帮助:)