Использование скрипта Python Pandas для нескольких файлов - PullRequest
0 голосов
/ 12 июня 2018

У меня есть скрипт на python (pandas), который считывает файлы csv в кадр данных, редактирует их и превращает в новый csv (вывод):

import pandas as pd

df = pd.read_csv(r'\filename.csv', sep=',')

# I skipped over the dataframe edits

try:
    df.to_csv(r'outputfilename', sep='\t', encoding='utf-8')    
except IOError as e:
    print('Could not make Excel file' % e)`

Я хотел бы использовать его на несколькихCSV-файлы сразу и получить несколько выходных данных (CSV):

Я попытался:

from tkinter.filedialog import askopenfilename

filename = askopenfilename()

df = pd.read_csv(filename, sep=',')
...

, и это работает (дает мне окно выбора), но я могу выбрать только одинфайл

Ответы [ 2 ]

0 голосов
/ 12 июня 2018
from tkinter.filedialog import askopenfilename
filename = askopenfilename()

В этом коде вы говорите, что 'askopenfilename', который должен открыть один файл, где при открытии нескольких файлов вы должны попробовать следующий код

import Tkinter,tkFileDialog
dir = Tkinter.Tk()
mul_file = tkFileDialog.askopenfilenames(parent=dir,title='Choose a 
                                                   multiple file')

'mul_file' будеткортеж.при необходимости измените его на list на

mul_file=list(mul_file)

, это даст все выбранные файлы в списке list.iterate в цикле и выполните в нем манипуляции csv

0 голосов
/ 12 июня 2018

Если достаточно сделать это один за другим, а не все файлы одновременно, взгляните на модуль glob :

1.Создать список файлов в целевой директории

target_directory = r'Path/to/your/dir'
file_list = glob.glob(target_directory + "/*.csv") 
# Include slash or it will search in the wrong directory!

2.Перебрать файлы в списке и творить чудеса

for file in file_list:                # Loop files
    df_result = your_function(file)   # Put your logic into a separate function
    new_filename = file.replace('.csv', '_processed.csv')
    df_result.to_csv(new_filename, index = False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...