Как обернуть один и тот же блок кода в цикл (или применить функцию) - PullRequest
0 голосов
/ 11 марта 2019

Я хочу обернуть в цикл блок кода, который выполняет те же операции над импортированными кадрами данных из разных файлов CSV.Рассмотрим пример: я импортирую

apples=pd.read_csv("path\dataset_1.csv")
oranges=pd.read_csv("path\dataset_2.csv")

Структура, формат и имена столбцов импортированных фреймов данных полностью совпадают.Затем я выполняю операции на первом сете.Например,

apples_1 = apples [["column A", "column B"]]
apples_1. columns= ["bad", "good"]
apples_2 = apples [["column C", "column D"]]
apples_2. columns = [ "bad", "good"]
apples_3=pd.concat([apples_1,apples_2],axis=0) 

Тогда, однако, я должен выполнить абсолютно те же операции со вторым фреймом данных - апельсинами.Напоминаю, что второй DataFrame имеет те же имена столбцов, что и первый, и после операции будет иметь те же переименованные столбцы.

 oranges_1 = oranges [["column A", "column B"]]
 oranges_1. columns= ["bad", "good"]
 oranges_2 = oranges [["column C", "column D"]]
 oranges_2. columns = [ "bad", "good"]
 oranges_3=pd.concat([oranges_1,oranges_2],axis=0) 

Было бы не очень Pythonic, если бы у меня было 10 DataFrames и мне пришлось бы выполнять одни и те же операции, записывая один и тот же код снова и снова;поэтому мне было интересно, если есть элегантный способ сделать это с помощью цикла, или применить функцию. Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 11 марта 2019
for i in range(1,11):
    df = pd.read_csv("path\dataset_{0}.csv".format(i))
    adf=pd.concat([df[["column A", "column B"]],df[["column C", "column D"]]],axis=0)
    adf.columns = [ "bad", "good", "bad", "good"]
    # do operations on adf

Зацикливайтесь на каждом CSV, читайте его в DF и работайте с ним. Пока все CSV-файлы имеют одинаковые имена столбцов (как упоминалось в вопросе), это должно работать.

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