要从目录中读取文件,请尝试以下操作:
import os import pandas as pd path=os.getcwd() files=os.listdir(path) files ['wind-diciembre.xls', 'stat_noviembre.xls', 'stat_marzo.xls', 'wind-noviembre.xls', 'wind-enero.xls', 'stat_octubre.xls', 'wind-septiembre.xls', 'stat_septiembre.xls', 'wind-febrero.xls', 'wind-marzo.xls', 'wind-julio.xls', 'wind-octubre.xls', 'stat_diciembre.xls', 'stat_julio.xls', 'wind-junio.xls', 'stat_abril.xls', 'stat_enero.xls', 'stat_junio.xls', 'stat_agosto.xls', 'stat_febrero.xls', 'wind-abril.xls', 'wind-agosto.xls']
哪里:
stat_enero Fecha HR PreciAcu RadSolar T Presion Tmax HRmax \ 01/01/2011 37 0 162 18.5 0 31.2 86 02/01/2011 70 0 58 12.0 0 14.6 95 03/01/2011 62 0 188 15.3 0 24.9 86 04/01/2011 69 0 181 17.0 0 29.2 97 . . . Presionmax RadSolarmax Tmin HRmin Presionmin 0 0 774 12.3 9 0 1 0 314 9.2 52 0 2 0 713 8.3 32 0 3 0 730 7.7 26 0 . . .
和
wind-enero Fecha MagV MagMax Rachas MagRes DirRes DirWind 01/08/2011 00:00 4.3 14.1 17.9 1.0 281.3 ONO 02/08/2011 00:00 4.2 15.7 20.6 1.5 28.3 NNE 03/08/2011 00:00 4.6 23.3 25.6 2.9 49.2 ENE 04/08/2011 00:00 4.8 17.9 23.0 2.0 30.5 NNE . . .
下一步是读取,解析文件并将其添加到数据框中,现在我执行以下操作:
for f in files: data=pd.ExcelFile(f) data1=data.sheet_names print data1 [u'diciembre'] [u'Hoja1'] [u'Hoja1'] [u'noviembre'] [u'enero'] [u'Hoja1'] [u'septiembre'] [u'Hoja1'] [u'febrero'] [u'marzo'] [u'julio'] . . . for sheet in data1: data2=data.parse(sheet) data2 Fecha MagV MagMax Rachas MagRes DirRes DirWind 01/08/2011 00:00 4.3 14.1 17.9 1.0 281.3 ONO 02/08/2011 00:00 4.2 15.7 20.6 1.5 28.3 NNE 03/08/2011 00:00 4.6 23.3 25.6 2.9 49.2 ENE 04/08/2011 00:00 4.8 17.9 23.0 2.0 30.5 NNE 05/08/2011 00:00 6.0 22.5 26.3 4.4 68.7 ENE 06/08/2011 00:00 4.9 23.8 23.0 3.3 57.3 ENE 07/08/2011 00:00 3.4 12.9 20.2 1.6 104.0 ESE 08/08/2011 00:00 4.0 20.5 22.4 2.6 79.1 ENE 09/08/2011 00:00 4.1 22.4 25.8 2.9 74.1 ENE 10/08/2011 00:00 4.6 18.4 24.0 2.3 52.1 ENE 11/08/2011 00:00 5.0 22.3 27.8 3.3 65.0 ENE 12/08/2011 00:00 5.4 24.9 25.6 4.1 78.7 ENE 13/08/2011 00:00 5.3 26.0 31.7 4.5 79.7 ENE 14/08/2011 00:00 5.9 31.7 29.2 4.5 59.5 ENE 15/08/2011 00:00 6.3 23.0 25.1 4.6 70.8 ENE 16/08/2011 00:00 6.3 19.5 30.8 4.8 64.0 ENE 17/08/2011 00:00 5.2 21.2 25.3 3.9 57.5 ENE 18/08/2011 00:00 5.0 22.3 23.7 2.6 59.4 ENE 19/08/2011 00:00 4.4 21.6 27.5 2.4 57.0 ENE
上面的输出只显示文件的一部分,我如何解析所有文件并将它们添加到数据帧
首先,看起来这些文件中有几个不同的数据集.您可能希望它们都在一个数据框中,但是现在,我将假设您希望它们分开.Ex(一个数据帧中的所有wind*.xls文件和另一个数据帧中的所有stat*.xls文件.)您可以使用解析数据read_excel
,然后使用时间戳作为索引连接结果,如下所示:
import numpy as np import pandas as pd, datetime as dt import glob, os runDir = "Path to files" if os.getcwd() != runDir: os.chdir(runDir) files = glob.glob("wind*.xls") df = pd.DataFrame() for each in files: sheets = pd.ExcelFile(each).sheet_names for sheet in sheets: df = df.append(pd.read_excel(each, sheet, index_col='Fecha'))
您现在有一个时间索引的数据帧!如果您真的想要将所有数据放在一个数据框中(来自所有文件类型),您可以glob
使用类似的东西调整包含所有文件glob.glob('*.xls')
.我会从个人经验中警告,您可能更容易分别读取每种类型的数据,然后在完成一些错误检查/修改等后合并它们.