Передайте строку в функцию Python и используйте эту строку в качестве имени столбца в кадре данных - PullRequest
0 голосов
/ 27 января 2020

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

def stock(tick):
    tick=tick.upper()
    tick, metadata=ts.get_daily(symbol=tick, outputsize='full')
    tick['date']=tick.index
    tick.index.name='index'
    tick=tick[['date', '4. close']]
    tick.columns=['date', 'tick_close']
    tick.sort_values('date', inplace=True)
    tick.drop_duplicates(subset='date', keep='first', inplace=True)
    return tick
GLD=stock('GLD')

В приведенном выше коде я хочу, чтобы кадр данных был переименован из tick в GLD, а столбец tick_close переименован в GLD_close. Мне нужно сделать все это, просто передав «GLD» в функцию.

1 Ответ

1 голос
/ 27 января 2020

Не обязательно понять вашу цель, но переименовать фреймы данных, но если вы хотите использовать 'GLD' для создания переменной GLD, я боюсь, что это невозможно, согласно комментарию в Динамически устанавливаемая локальная переменная

Примечание: имя переменной, определенной в def stock (тик), используется только в этой функции, когда вы вызываете новую переменную с именем GLD во время GLD = stock ('GLD'), то есть в def Функция, которую вы можете вызывать как угодно, без воздействия, после запуска GLD = stock ('GLD')

вы можете сделать копию кадра данных, используя pandas:

GLD=tick.copy()

Для изменения имя столбца, вы можете сделать так:

def stock(tick) :
   ... 
   #assuming you did the copy of the dataframe before. 
   GLD.columns=['date', f'{tick}_close']
   ... 
...