Итерируйте по нескольким фреймам данных и выполняйте математические функции, сохраняя вывод - PullRequest
0 голосов
/ 25 мая 2018

У меня есть несколько фреймов данных, на которых я выполняю одни и те же функции - извлечение среднего значения, геомеи, медианы и т. Д. Для определенного столбца (PurchasePrice), организованного группами внутри другого столбца (GORegion).В данный момент я просто выполняю это для каждого кадра данных отдельно, так как не могу понять, как это сделать в цикле for и сохранить отдельные серии данных для каждой функции, выполняемой на каждом кадре данных.

т.е. я выполняю медиану так:

regmedian15 = pd.Series(nw15.groupby(["GORegion"])['PurchasePrice'].median(), name = "regmedian_nw15")

Я хочу сделать это для списка фреймов данных [nw15, nw16, nw17], извлекая одинаковые выходные переменные для каждого из них.

Я пробовал что-то вроде:

listofnwdfs = [nw15, nw16, nw17]

for df in listofcmldfs:
       df+'regmedian' = pd.Series(df.groupby(["GORegion"])
       ['PurchasePrice'].median(), name = df+'regmedian')

, но там написано "не могу назначить оператору"

Я думаю, что главное - я не могу понять, как создать отдельныйвыводить имена переменных, используя имена фреймов данных, которые я ввожу в цикл for.Мне просто нужна функция цикла for, которая выдает мой медианный вывод в виде последовательности для каждого кадра данных в списке отдельно, и я могу сделать это для средних значений и так далее.

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 25 мая 2018

Во-первых, df+'regmedian' = ... не является допустимым синтаксисом Python.Вы пытаетесь присвоить значение выражению вида A + B, поэтому Python жалуется на то, что вы пытаетесь переопределить значение +.

Кроме того, df+'regmedian' само по себе кажетсястранный.Вы пытаетесь добавить DataFrame и строку.

Один из способов отслеживать различную статистику для разных datafarmes - использование dicts.Например, вы можете заменить

listofnwdfs = [nw15, nw16, nw17]

на

dict_of_nwd_frames = {15: nw15, 16: nw16, 17: nw17}

Допустим, вы хотите сохранить 'regmedian' данные для каждого кадра.Вы можете сделать это и с помощью диктов.

data = dict()
for key, df in dict_of_nwd_frames.items():
        data[(i, 'regmedian')] =  pd.Series(df.groupby(["GORegion"])['PurchasePrice'].median(), name = str(key) + 'regmedian')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...