【问题标题】:Python merge/append only new excel filesPython仅合并/追加新的excel文件
【发布时间】:2020-05-23 03:11:43
【问题描述】:

下面是我用来合并所有 Excel 文件的代码。 CSV 完成得非常快,但是 excel 合并需要更长的时间。我所做的是将新的 excel 文件拖放到文件夹中,运行代码以输出单个更新的文件。但是,它开始需要更长的时间。我该怎么做才能让它只附加新删除的文件?

import os
import glob
import pandas as pd

os.chdir(r"myinputfolder")
extension = 'xlsx'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
combined_xlsx = pd.concat([pd.read_excel(f,'Download') for f in all_filenames ])
os.chdir(r"myoutputfolder")
combined_xlsx.to_excel( "combined_xlsx.xlsx", index=False, encoding='utf-8-sig')

【问题讨论】:

  • 您是每次都连接所有文件,还是只是将最近的结果与最新的文件连接起来?
  • 是的,我运行代码来连接文件夹中的所有文件。我希望脚本只连接/附加我每隔一天放入文件夹中的新文件。
  • 你在别处也有这些文件,你能把它们从文件夹中删除吗?
  • 抱歉我没关注?
  • 我想如果我解释一下我的想法会更清楚:现在运行一次程序,连接您当前拥有的所有 Excel 文件。然后,将生成的文件(我们可以称之为 v1)添加到一个空文件夹中。下次将新文件添加到文件夹时,让脚本将其添加到 v1,创建文件 v2,然后删除 v1 和新文件,仅在文件夹中留下 v2。每次添加新文件时重复一次。

标签: python excel csv merge append


【解决方案1】:
import glob
import pandas as pd

#excel to csv 
source= r'C:\Users\'
dest= r'C:\Users\'
os.chdir(source)

for file in glob.glob("*.xlsx"):
       df = pd.read_excel(file, 'sheet1')
       df.to_csv(dest+file+'.csv', index=False)
       os.remove(file)
#append

os.chdir(r"C:\Users")
extension = 'csv'
all_Ph = [i for i in glob.glob('*.{}'.format(extension))]
Ph = pd.concat([pd.read_csv(f) for f in all_Ph ])
Ph.drop(Ph.columns[[0, 3, 7, 10]], axis=1, inplace=True)
os.chdir(r"C:\Users")
Ph.to_csv( "xhtfr.csv", index=False)

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2011-01-22
    相关资源
    最近更新 更多