【问题标题】:Parsing multiple xlsx files with some data manipulation to create a new file使用一些数据操作解析多个 xlsx 文件以创建新文件
【发布时间】:2019-06-27 19:48:54
【问题描述】:

我想解析多个 .xlsx 文件,仅读取特定工作表名称“Target”(文件名格式:“name_20190626.xlsx”,文件名中带有版本日期),从文件名中提取版本日期,添加此日期,即 20190626作为每个文件中每一行的新列,并使用所有 .xlsx 文件中的选定列 [Col 0,1,-1] 创建一个数据框。

我设法打开正确的工作表,提取日期并加载我想要的列,当我尝试添加新列时,我收到错误“ValueError:值的长度与索引的长度不匹配”。

all_data = pd.DataFrame()
for f in glob.glob("01_Historical_files/*.xlsx"):
    print(f)
    """ df = pd.read_excel(f)  """
    date = re.findall("(\d{8})", f)
    print(date)
    xl = pd.ExcelFile(f)
    df = xl.parse('STATIC').iloc[:,[0,1,-1]]
    df.assign(score_date = date)
    df.head()
    all_data = all_data.append(df,ignore_index=True)

预期输出(包含所有行):

  • 第 1 列包含同一文件所有行的版本日期
  • 包含“重复数据删除因子”的第 2 列 - 如果我已经可以过滤数据框中等于 1 的值,那就太好了。
  • 第 3 列是唯一 ID
  • 第 4 列包含分数的最后一列

【问题讨论】:

    标签: python


    【解决方案1】:

    我想我找到了一种让它发挥作用的方法 - 仍然可以找到更好的方法;)

    all_data = pd.DataFrame()
    for f in glob.glob("01_Historical_files/*.xlsx"):
        print(f)
        """ df = pd.read_excel(f)  """
    
    
        xl = pd.ExcelFile(f)
    
        date2 = xl.parse('SOURCES >>>').iloc[1,1]
        print(date2)
        df = xl.parse('STATIC').iloc[:,[0,1,-1]]
    
    
        """ Looping across all rows within the df frame """
        for i, row in df.iterrows():
          """print (i)   """ 
          df['score_date'] = date2
    
        df.head()
    
        all_data = all_data.append(df,ignore_index=True)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-07
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多