Arhn - архитектура программирования

Применить функцию к каждому элементу нескольких списков; возвращать фреймы данных с разными именами

У меня есть функция, которая возвращает конкретные пары страна-валюта, которые используются на следующем шаге. Возврат выглядит примерно так:

lst_dolar = ['USA_dolar','Canada_dolar','Australia_dolar']
lst_eur = ['France_euro','Germany_euro','Italy_euro']
lst_pound=['England_pound','Scotland_pound','Wales_pound']

Затем я использую функцию, которая возвращает фрейм данных. Один из параметров этой функции - пара страна-валюта, а другой - период из списка периодов:

period_lst = ['1y','2y','3y','4y','5y']

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

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

Пример: USA_dolar_1y

Затем я хотел бы иметь возможность взять каждый из этих фреймов данных и сохранить их в таблице в базе данных, которая имеет то же имя, что и каждый фрейм данных.

Спасибо!


Ответы:


1

Всякий раз, когда вы думаете, что вам нужно динамически именовать переменные в Python, вам, вероятно, понадобится словарь:

def my_func(df, period):
    # do something with period and dataframe and return the result
    return df


period_lst = ['1y', '2y', '3y', '4y', '5y']
usa_dollar= {}
for p in period_lst:
    usa_dollar[p] = my_func(df, p)

Затем вы можете получить доступ к различным результирующим фреймам данных (или к тому, что возвращает ваша функция) по их периоду:

use_data(usa_dollar['3y'])

Кстати: не используйте заглавные буквы в именах переменных, вы должны зарезервировать CamelCase для имен классов и писать имена функций и имена переменных в нижнем регистре, разделенные подчеркиванием для удобства чтения. Так, например, usa_dollar, а не USAdollar.

Это помогает редакторам выявлять проблемы в вашем коде и упрощает чтение кода для других программистов, а также для вас в будущем. Посмотрите PEP8, чтобы узнать больше об этих правилах стиля.

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

09.11.2020
  • Привет, @Grismar, большое спасибо за ваш ответ и за предупреждение, касающееся CamelCase. Итак, в этом примере я хочу создать 5 * 3 = 18 фреймов данных. Затем я хочу сохранить каждый фрейм данных в другой таблице базы данных с помощью Sqlite3. Итак, мой вопрос: следует ли использовать вложенный цикл for для перебора каждого списка валют (например, euro_lst, dollar_lst) и каждого периода времени (например: 1y, 2y, 3y)? А затем использовать вашу функцию, чтобы назвать каждый df отдельно? Как тогда я мог бы вызвать каждый из них отдельно, чтобы сохранить каждый df в отдельной таблице базы данных? Спасибо. 10.11.2020
  • Думаю, вы найдете 5 * 3 как 15 :). Вы можете сделать это с помощью циклов for, конечно, или как хотите. Просто найдите словарь dict type и посмотрите, как он работает в Python - я уже отвечал на эти вопросы в ответе выше, пожалуйста, посмотрите еще раз и посмотрите, понимаете ли вы тип данных dict. 10.11.2020
  • ахахахахаха да, на самом деле у меня было 5 здесь и 6 на моем проекте! xD сделает это сейчас, спасибо! 10.11.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..