【问题标题】:Problem with combining multiple excel files in python pandas在python pandas中组合多个excel文件的问题
【发布时间】:2021-04-18 01:02:37
【问题描述】:

我对 python 编程很陌生。我需要将 1000 多个文件合并到一个文件中。每个文件都有 3 张纸,我只需要从 sheet2 获取数据并制作最终的 excel 文件。我面临一个问题,即从 sheet2 上的每个 excel 文件中的特定单元格中选择一个值并创建一个列。 python 正在从第一个文件中选择值并在其上创建一个列

    df = pd.DataFrame()
            
    for file in files:
        if file.endswith('.xlsm'):
            df = pd.read_excel(file, sheet_name=1, header=None) 
            df['REPORT_NO'] = df.iloc[1][4] #Report Number
            df['SUPPLIER'] = df.iloc[2][4] #Supplier
            df['REPORT_DATE'] = df.iloc[0][4] #Report Number
        df2 = df2.dropna(thresh=15)
        df2 = df.append(df, ignore_index=True)
        df = df.reset_index()
        del df['index']
    df2.to_excel('FINAL_FILES.xlsx')

我该如何解决这个问题,以便 python 可以从每个 excel 中获取信息并将信息放在正确的行上。

【问题讨论】:

  • 我认为你想要的是 df2 是 gloabl 而 df 不是。不要使用循环执行此操作,而是使用文件 1 和文件 2 执行此操作,然后使用该文件和文件 3 的输出执行此操作。在某处我认为您的范围界定是错误的,或者使用外部 `df = pd.DataFrame ()` 或您创建的列完全填充报告编号、供应商或报告日期。

标签: python excel pandas


【解决方案1】:

I df.iloc[2][4] 指的是第一张纸的第二行第四列。您已使用 sheet_name=1 导入,但从未激活过其他工作表,尽管您提到所有 .xlsm 都有 3 个工作表。

II 你的范围可能是错误的。为什么要在循环之外定义df?如果每个文件都会改变,所以不需要外部文件。循环中的所有信息都应在循环的下一次迭代之前放入您的df2

III 你检查过append是添加一行还是一列?
虽然

df['REPORT_NO'] = df.iloc[1][4] #Report Number
df['SUPPLIER'] = df.iloc[2][4] #Supplier
df['REPORT_DATE'] = df.iloc[0][4] #Report Number

写成列,在该列的每一行都重复报告编号/供应商/报告日期。

当您使用df2 = df.append(df, ignore_index=True) 时,请检查输出。它可能没有按照您想要的方式附加。

【讨论】:

  • 是的,因为我只需要 sheet_name=1 中的数据,并且在这些位置的每个 excel sheet_name=1 中,此单元格中都有供应商名称。
猜你喜欢
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
相关资源
最近更新 更多