我正在尝试使用作为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“传递给函数来完成所有这些操作。
发布于 2020-01-27 13:42:39
不确定是否理解您的目标,但重命名一个数据帧,但如果您想使用'GLD‘来创建一个变量GLD,我恐怕这是不可能的,根据Dynamically set local variable的评论
注意:在def stock (tick)中定义的变量的名称仅在此函数中使用,因为您在GLD=stock(' GLD ')期间调用了一个名为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']
   ... https://stackoverflow.com/questions/59925405
复制相似问题