簡體   English   中英

使用 pd.concat 代替 df.append

[英]Use pd.concat instead of df.append

我有一些我想改進的代碼。 首先是因為它非常慢,其次是因為 append 將被棄用。 我有這段代碼,出於我提到的原因,我想使用 concat 而不是 append ,但是在檢查了幾個關於堆棧溢出的類似問題后,我還沒有為自己的代碼找到解決方法。 我確信它有一個簡單的解決方案,但我就是找不到。 我將不勝感激。 提前致謝!

import time
from time import sleep
# IMPORTAR LIBRERÍA EXCEL Y MÓDULO SISTEMA
import os
import csv
import pandas as pd
import pandas
import openpyxl
import warnings

with warnings.catch_warnings(record=True):
    warnings.simplefilter("always")
# LIBRERÍA ITERACIÓN CARPETAS
from pathlib import Path

# DE CADA ARCHIVO EXCEL EXISTENTE EN EL DIRECTORIO, BORRA LAS COLUMNAS 1-15   
INPUT_DIR = Path.cwd() / r"C:\Users\param\OneDrive\Documents\Automat Consumos\Excels Descargas"
for file in list(INPUT_DIR.rglob("*.xls*")):
    df = pd.read_excel(file)
    if len(df. index) >12:
        df = df.drop([0,1,2,3,4,5,6,7,8,9,10,11,12], axis = 0)
        df.to_excel(file, engine="openpyxl", header = False, index = False)
    else:
        os.remove(file)

df = pd.DataFrame() 
for file in list(INPUT_DIR.rglob("*.xls*")):
    df = df.append(pd.read_excel(file), ignore_index=True)
    df.to_excel(r"C:\Users\param\OneDrive\Documents\Automat Consumos\Excels Combinados\Final Sin Etiquetas\EXCEL DEFINITIVO TOTAL.xlsx", engine="openpyxl", index = False)

鑒於您的問題是指代碼的特定部分, append()替換為concat() 我看到你正在輸出一個 excel,它在每次迭代后都會被覆蓋,這(可能)是一個錯誤,而且效率也很低。 這部分代碼:

df = pd.DataFrame() 
for file in list(INPUT_DIR.rglob("*.xls*")):
    df = df.append(pd.read_excel(file), ignore_index=True)
    df.to_excel(r"C:\Users\param\OneDrive\Documents\Automat Consumos\Excels Combinados\Final Sin Etiquetas\EXCEL DEFINITIVO TOTAL.xlsx", engine="openpyxl", index = False)

可以替換為:

output = pd.concat([pd.read_excel(x,ignore_index=True) for x in list(INPUT_DIR.rglob("*.xls*")])
output.to_excel("path",engine="openpyxl",index=False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM