将字符串传递给Python函数,并将该字符串用作数据框中的列名

时间:2020-01-27 05:10:12

标签: python pandas function arguments parameter-passing

我试图通过使用作为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 个答案:

答案 0 :(得分:1)

不确定要了解您的目标,而是要重命名数据框, 但是,如果您想使用“ GLD”来创建变量GLD,那么根据Dynamically set local variable

中的注释,恐怕是不可能的

注意:仅当在GLD = stock('GLD')期间调用名为GLD的新变量时,才在def stock(tick)中定义的变量名称才在此函数中使用,因此在def函数中可以将变量称为您希望在运行GLD = stock('GLD')之后没有任何影响

您可以使用熊猫制作数据框的副本:

GLD=tick.copy()

要更改列名,您可以这样做:

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