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

问题描述 投票:0回答:1

我正在尝试使用我作为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”传递给函数来完成所有这些操作。

python pandas function arguments parameter-passing
1个回答
0
投票

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

注意:在def stock(tick)中定义的变量名称仅在您在GLD = stock('GLD')期间调用名为GLD的新变量时才在此函数中使用,因此在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']
   ... 
© www.soinside.com 2019 - 2024. All rights reserved.