python - 如何在 python 中改进我的追加和读取 excel For 循环

标签 python append concatenation

希望你能帮助我。

我有一个文件夹,其中有几个具有相似结构的 .xlsx 文件(请注意,某些文件可能大于 50MB)。我想将它们组合在一起并(最终)将它们发送到数据库。但在此之前,我需要提高该代码块的性能,因为有时处理所有这些文件需要花费大量时间。

有问题的代码是这样的:

df_list = []    
for file in location:
    df_list.append(pd.read_excel(file, header=0, engine='openpyxl'))

df_concat = pd.concat(df_list)

有什么建议吗?

我在某处读到,将 Excel 文件转换为 CSV 可能会提高性能,但我应该在 append 文件之前还是在连接所有内容之后执行此操作? 考虑到 df_list 是一个列表,我可以进行转换吗?

最佳答案

我找到了 xlsx2csv 的解决方案

xlsx_path = './data/Extract/'
csv_path = './data/csv/'
list_of_xlsx = glob.glob(xlsx_path+'*.xlsx')


for xlsx in list_of_xlsx:
    # Extract File Name on group 2 "(.+)"
    filename = re.search(r'(.+[\\|\/])(.+)(\.(xlsx))', xlsx).group(2)
    # Setup the call for subprocess.call()
    call = ["python", "./xlsx2csv.py", xlsx, csv_path+filename+'.csv']
    try:
        subprocess.call(call) # On Windows use shell=True
    except:
        print('Failed with {}'.format(filepath)

outputcsv = './data/bigcsv.csv' #specify filepath+filename of output csv

listofdataframes = []
for file in glob.glob(csv_path+'*.csv'):
    df = pd.read_csv(file)
    if df.shape[1] == 24: # make sure 24 columns
        listofdataframes.append(df)
    else:
        print('{}  has {} columns - skipping'.format(file,df.shape[1]))

bigdataframe = pd.concat(listofdataframes).reset_index(drop=True)
bigdataframe.to_csv(outputcsv,index=False)

我试图让这项工作适合我,但没有成功。也许你可以让它为你工作?或者有人有什么想法吗?

关于python - 如何在 python 中改进我的追加和读取 excel For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71871254/

相关文章:

reactjs - 与未转换为 localIdentName 的 Storybook 连接字符串 react

python - 尝试在加载此文件时实现缓存

list - 将元素 append 到方案中的现有列表

python - 如何 append 到AWS S3上的json文件

mysql - 连接两个表并从一列返回多个匹配项的 SQL 查询?

c# - XDocument/Linq 将属性值连接为逗号分隔列表

python - 如何在pytorch中实现可微分的汉明损失?

python - 如何在 Pillow 中使 image.show() 成为阻塞调用?

python - 使用 Flask-Admin 上传多张图片

javascript - 具有 .data 和 html5 数据属性的 jQuery 自定义函数