循环遍历数据框字典中的数据框

Posted

技术标签:

【中文标题】循环遍历数据框字典中的数据框【英文标题】:Loop through Dataframes in Dict of Dataframes 【发布时间】: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 文件数据或我的代码的当前输出,请告诉我。谢谢!

【问题讨论】:

【参考方案1】:

我认为创建一个 ExcelFile 对象可能会更好。由于没有示例数据,我无法解决您的实际问题,但总的来说我的策略如下:

EF = pd.ExcelFile('path/to/file.xlsx')

ExcelFile 对象有一个属性sheet_names,它返回一个包含ExcelFile 对象中所有工作表的列表。这些工作表中的每一个都可以使用parse 单独解析。然后将每个工作表作为数据框返回。所以你可以迭代如下:

for sheet_name in EF.sheet_names:
    temp_df = EF.parse(sheet_name)
    #perform your calculations 
    #export to SQL

希望这有点用...

【讨论】:

确实如此。我正在努力将其合并到我的代码中。如果我有任何其他相关问题,我会告诉你,然后点赞你的回复!谢谢! 有效!我一直在寻找解决这个问题的方法.. 非常感谢 太棒了!是的,ExcelFile 对象非常有用。

以上是关于循环遍历数据框字典中的数据框的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历数据框字典

循环遍历python中的数据框字典

Python---循环遍历带有数据框的字典

遍历数据框和字典以更新数据框中的值,以便与 python 匹配字符串

循环遍历 df 字典以合并 Pandas 中的 df

循环遍历 pandas 数据框列中的列表元素以在新列中返回列表