【发布时间】:2015-10-31 14:49:55
【问题描述】:
我有一个包含多个工作表的 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 文件中工作表的名称不是“Sheet1”、“Sheet2”等。并且会随着我在其他 Excel 文件上运行此代码而改变(我确实需要这样做)。所有工作表都包含类似的数据:日期和时间索引列、列名以及数字数据(正数和负数)。不同的工作表可能有不同的列数。
我真正需要做的是对 我的 Excel 文件中的所有工作表执行上述计算/数据框操作。据我了解,这意味着我需要改变
pd.read_excel()
到
pd.read_excel(..., sheetname= 0)
然而,这会将raw_data 变量转换为DataFrame 的字典,而不仅仅是DataFrame。有人可以帮我创建一些代码来循环遍历DataFrame 的这个字典,并执行上面代码中显示的计算/操作为每个DataFrame/Sheet?很遗憾,我没有找到任何在线资源可以帮助我理解这一点。
如果有人能帮我找出一种方法来将这些被操纵的DataFrame 中的每一个导出到 SQL,那就太好了。我很难想出一种不覆盖以前数据的方法。
如果您需要我发布其他信息,例如 Excel 文件数据或我的代码的当前输出,请告诉我。谢谢!
【问题讨论】:
标签: python loops dictionary pandas dataframe