我有一个包含多个工作表的excel文件,我正在使用Pandas读取Python。我目前正在使用命令
raw_data=pd.read_excel(...)
从文件中读取数据(到DataFrame
),之后我会对DataFrame
执行大量计算。请参阅以下代码:
raw_data = pd.read_excel(r'/Users/linnk/Desktop/Results/01_05_2012 Raw Results.xls', skiprows=1, header=0, nrows=1440)
raw_data[u'Time']= pd.to_datetime(raw_data[u'Time'], unit='d') # Converts first column to datetime, to make averaging easier
raw_data.set_index(pd.DatetimeIndex(raw_data[u'Time']), inplace=True)
ave_data = raw_data.resample('h', how='mean')
raw_data.Time = pd.to_datetime(raw_data.Time)
def time_cat(t):
hour = t.hour
if(hour >= 5 and hour < 9):
return 'Morning (5AM-9AM)'
elif(hour >= 9 and hour < 18):
return 'Day (9AM-6PM)'
elif(hour >= 18 and hour < 22):
return 'Evening (6PM-10PM)'
else:
return 'Night (10PM-5AM)'
ave_by_timeofday = raw_data.groupby(raw_data.Time.apply(time_cat)).mean()
有关信息,Excel文件中的工作表名称为不&#39; Sheet1&#39;,&#39; Sheet2中&#39;等。当我将此代码运行到其他Excel文件(我确实需要这样做)时,它会发生变化。所有工作表都包含类似的数据:日期和时间索引列,列名称,然后是数字数据(正数和负数)。不同的工作表可能具有不同的列数。
我真正需要做的是对我的Excel文件中的所有工作表执行上述计算/数据框操作。据我所知,这意味着我需要改变
pd.read_excel()
到
pd.read_excel(..., sheetname= 0)
但是,这会将raw_data
变量转换为DataFrame
的dict,而不仅仅是DataFrame
。有人可以帮我创建一些循环遍历DataFrame
的Dict的代码,并执行上面代码中显示的计算/操作每个DataFrame / Sheet 吗?我很遗憾没有在网上找到任何帮助我理解这一点的资源。
有人可以帮我找出将这些被操纵的DataFrame
中的每一个导出到SQL的方法,这也很棒。我很难想到一种方法,而不是覆盖以前的数据。
如果您需要我发布其他信息,例如我的代码中的Excel文件数据或当前输出,请告诉我。谢谢!
答案 0 :(得分:1)
我认为创建ExcelFile对象可能会更好。由于没有示例数据,我无法解决您的实际问题,但一般来说我的策略如下:
@SpringBootApplication
ExcelFile对象具有属性EF = pd.ExcelFile('path/to/file.xlsx')
,该属性返回包含ExcelFile对象中所有工作表的列表。可以使用sheet_names
单独解析每个工作表。然后将每个工作表作为数据框返回。所以你可以按如下方式迭代:
parse
希望这有用......