Как реализовать итеративный способ изменения чтения имени файла и как объединить результат в один файл Excel - PullRequest
1 голос
/ 14 июля 2020

Я новичок в python. Имейте задачу, которая должна найти некоторые из следующего для всех файлов Excel (1.xlsx-350.xlsx) около 350 файлов Excel, которые содержатся в одной папке (Видео). и написал следующий код, он работает нормально, но требует много времени, вручную нужно менять имя файла на каждой итерации. даже в конце процесса мне нужно объединить все 350 файловых данных Excel в один файл Excel. Но в моем коде он перезаписывает каждую итерацию. пожалуйста, помогите мне решить эту проблему.

data12 = pd.read_excel (r'C:\Users\Videos\1.xlsx')
gxt = data12.iloc [:,0]
gyan = data12.iloc [:,1]
int= gyan.iloc[98:197]
comp= gyan.iloc[197:252]
seg= gyan.iloc[252:319]
A= max(int)   
B= max(comp)  
C= min(comp)  
D= max(seg) 
s = pd.Series([A, B, C, D])
frame_data= [gyan, comp, seg, stat]
result = pd.concat(frame_data)
result.to_excel("output.xlsx", sheet_name='modify_data', index=False) 

спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 15 июля 2020

Пожалуйста, проверьте следующий код:

import pandas as pd
import numpy as np
import openpyxl
from openpyxl import load_workbook, Workbook
import os

# Give an excel filename and worksheet name 
output='C:\Users\Videos\output.xlsx'
worksheet = 'Sheet'
wb = Workbook() 

# If file not present at location, then create one
if os.path.isfile(output):
    print('File Present')
else:
    print('Creatted New file')
    ws = wb.create_sheet(worksheet)
    wb.save(output)

# Loop for all 350 files
for i in range(1, 351):
    print('File {}:'.format(i))
    data12 = pd.read_excel('C:\Users\Videos\{}.xlsx'.format(i))
    gxt = data12.iloc [:,0]
    gyan = data12.iloc [:,1]
    int= gyan.iloc[8:19]
    comp= gyan.iloc[19:25]
    seg= gyan.iloc[25:31]
    A= max(int)   
    B= max(comp)  
    C= min(comp)
    D= max(seg) 
    s = pd.Series([A, B, C, D])
    
    frame_data= [gyan, comp, seg]
    result = pd.DataFrame(pd.concat(frame_data))
    ws = wb.active
    result_list = result.to_numpy()
    print('Total rows = ', len(result_list))
    for row in result_list.tolist():
        ws.append(row)
    wb.save(output)

Это поможет просмотреть все 350 файлов и сохранить их в выходной файл. Также внесите соответствующие изменения в frame_data. Надеюсь, это сработает для вас.

0 голосов
/ 14 июля 2020

Текущий код дает вам все файлы в папке

filenames = listdir(r'C:\Users\Videos')
count = 1
for file in filenames:
    print (file)
....... 
#At the end
output = "output-" + str(count) + ".xlsx"
count = count + 1
result = pd.concat(frame_data)
result.to_excel(output, sheet_name='modify_data', index=False) 

Для главного файла вы можете сохранить данные в pandas кадре данных и продолжать добавлять каждый файл в l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...