Как аргумент в функции можно использовать для определения имени фрейма данных, который вы хотите использовать внутри функции? - PullRequest
1 голос
/ 07 января 2020

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

    import pandas as pd
    import numpy as np

Предположим, у вас есть три фрейма данных, по одному на каждый год

    df_2005 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
    df_2006 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
    df_2007 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))

Эта функция, например, извлекает некоторые данные из фрейма данных для генерации другой переменной

    def func_1 (Year):
       data=data_+year
       X=data.iloc[[1,2],[2,3]].copy() 
       return X

Так я собираюсь использовать функцию:

 subdata_2005=func_1('2005')

Я пробовал несколько вещей, таких как data_ + year, data_`year ', но, похоже, ничего не работает. Я не смог найти ответы на подобные вопросы, которые могли бы помочь мне в этом случае. Любое предложение будет высоко ценится

1 Ответ

0 голосов
/ 07 января 2020

То, что я хотел бы предложить, это указывать в виде команды / списка данных, например,

, а не пытаться сделать это, что не будет работать

for i in range(2005,2007): 'df_'+i = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))

try

dfs = {} for i in range(2005,2007): dfs[i] = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))

, следовательно, def func_1 (Year): data=data_+year X=data.iloc[[1,2],[2,3]].copy() return X

, следовательно, будет def func_1 (Year): data = dfs[Year] X=data.iloc[[1,2],[2,3]].copy() return X

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