我试图通过使用作为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”传递给函数来完成所有这一切。
答案 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']
...