使用python从excel工作表中提取和处理数据

场景:我想出来一个Python代码读取给定文件夹中的所有工作簿,获取每个数据,并将其放到一个数据框(每个工作簿成为一个数据框,所以我可以单独操纵它们)。

问题1:使用此代码,即使我正在使用正确的path和文件types,我不断收到错误:

File "<ipython-input-3-2a450c707fbe>", line 14, in <module> f = open(file,'r') FileNotFoundError: [Errno 2] No such file or directory: '(1)Copy of Preisanfrage_17112016.xlsx' 

问题2:我创build不同数据框的原因是每个工作簿都有一个单独的格式(行是我的标识符,列是date)。 我的问题是,这些工作簿中的一些工作表上有一个名为“closures”,或“打开”或没有指定的名称表的数据。 所以我会尝试单独configuration每个dataframe,然后再join它们。

问题3:考虑到dataframe数据已经统一后的最终输出,我的目标是以如下格式输出它们:

 date 1 identifier 1 value date 1 identifier 2 value date 1 identifier 3 value date 1 identifier 4 value date 2 identifier 1 value date 2 identifier 4 value date 2 identifier 5 value 

Obs1:对于输出,不是所有的date都有相同的标识符数组。

问题1:代码产生这个错误的任何想法? 有没有更好的方法从Excel中提取数据?

问题2:是否可以为每个工作表创build一个唯一的数据框? 这是一个很好的做法吗?

问题3:我可以使用循环来做这种types的输出吗? 这是一个很好的做法吗?

Obs2:我不知道这有多相关,但是我正在使用Python 3.6和Anaconda。

目前代码:

 import pandas as pd import numpy as np import matplotlib.pyplot as plt import glob, os import datetime as dt from datetime import datetime import matplotlib as mpl directory = os.path.join("C:\\","Users\\Dgms\\Desktop\\final 2") for root,dirs,files in os.walk(directory): for file in files: print(file) f = open(file,'r') df1 = pd.read_excel(file) 

认为你不需要你的开放。 我会把它们存储在一个列表中。 你可以使用pd.concat(list_of_dfs)或者手动修改。

 list_of_dfs = [] for root,dirs,files in os.walk(directory): for file in files: f = os.path.join(root, file) print(f) list_of_dfs .append(pd.read_excel(f)) 

或使用glob

 import glob list_of_dfs = [] for file in glob.iglob(directory + '*.xlsx') print(file) list_of_dfs .append(pd.read_excel(file)) 

或作为jackiebuild议你可以阅读特定工作表list_of_dfs.append(pd.concat([pd.read_excel(file, 'Opening'), pd.read_excel(file, 'Closing')])) 。 如果你只有其中一个可用,你甚至可以改变

 try: list_of_dfs.append(pd.concat([pd.read_excel(file, 'Opening')) except: pass try: list_of_dfs.append(pd.concat([pd.read_excel(file, 'Closing')) except: pass 

(当然,你应该指定确切的错误,但不能testingatm)

问题1:如果您使用IDE或Jupyter把绝对path文件。 或者将项目文件夹添加到系统path(解决方法,不build议)。