【问题标题】:Python How to convert collections.OrderedDict to dataFramePython 如何将 collections.OrderedDict 转换为 dataFrame
【发布时间】:2020-06-14 14:03:10
【问题描述】:

我有以下任务: 1) 我有一个带有一些电子表格的 excel 文件。从这些电子表格中,我需要“A:CU”列中的信息,第 41 - 51 行 2)然后我需要从所有电子表格的“A:CU”列、第 41 - 51 行(它们具有相同的结构)中收集信息并创建一个数据库。 3) 应该有一列表明从哪个电子表格中收集数据

我做了以下操作:

import pandas as pd
file='January2020.xlsx'
#getting info from spreadsheets C(1), C(2) and so on
days = range(1,32)
sheets = []
for day in days:
    sheets.append('C(' + str(day)+')')
#importing data
all_sales=pd.read_excel(file,header=None,skiprows=41, usecols="A:CU", sheet_name=sheets,
                skipfooter=10)

现在我有 collections.OrderedDict 并且很难将它放入 dataFrame 中。

我需要的是这样的数据框:

【问题讨论】:

    标签: python excel dataframe ordereddict


    【解决方案1】:

    试试pd.concat

    df = pd.concat(all_sales, ignore_index = True) 
    

    【讨论】:

    • 不,它不起作用。我有一列包含 C(1)、C(2)...没有任何其他数据
    • 我也试过这个代码:xls=pd.ExcelFile(file); df=xls.parse("C(1)", header=None, skiprows=40, usecols="A:CU", skipfooter=10); df.insert(0,"Date","C(1)") 它与 1 个电子表格完美配合。然后我尝试使用以下代码浏览电子表格 C(1) - C(31):days = range(1,32) sheets = [] for day in days: sheets.append('C(' + str(day)+')') xls=pd.ExcelFile(file) df=xls.parse(sheets, header=None, skiprows=40, usecols="A:CU", skipfooter=10) df.insert(0,"Date",sheets) 但再次以 'collections.OrderedDict' 对象没有属性 'insert' 结束
    【解决方案2】:

    我使用了这段代码,它成功了:

    file='January2020.xlsx'
    days = range(1,32)
    all_sales=pd.DataFrame()
    df = pd.DataFrame()
    all_df = []
    for day in days:
        sheet_name = "C("+str(day)+")"
        all_sales=pd.read_excel(file,header=None,skiprows=41,usecols="A:CU", sheet_name=sheet_name,
                    skipfooter=10)
        all_sales["Date"] = sheet_name
        all_df.append(all_sales)
    df_final = pd.concat(all_df)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-24
      • 2018-01-23
      • 2022-01-23
      • 2021-03-01
      • 1970-01-01
      • 2022-12-18
      • 2021-06-14
      • 1970-01-01
      相关资源
      最近更新 更多