通过一些数据操作来解析多个xlsx文件以创建一个新文件

时间:2019-06-26 15:01:12

标签: python

我想解析多个.xlsx文件,这些文件仅读取特定的工作表名称“目标”(文件名格式:“ 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列最后一个包含分数的列

1 个答案:

答案 0 :(得分:0)

我想我找到了一种使它起作用的方法-仍对实现它的更好方法持开放态度;)

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)