Python 修复库中用于下载多个股票符号的面板弃用

Python 修复库中用于下载多个股票符号的面板弃用,python,pandas,Python,Pandas,我想知道是否有人能帮我解决一个图书馆里的一个快速问题,我用它从雅虎财经下载多个股票符号。以下是错误: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/ipykernel_launcher.py:2: 弃用警告:面板已弃用,将在以后的时间内删除 未来版本。表示这些类型的 三维数据在数据帧上具有多索引,通过 方法,也可以使用xarray包 . Pandas提供了一个.to_xarray() 方

我想知道是否有人能帮我解决一个图书馆里的一个快速问题,我用它从雅虎财经下载多个股票符号。以下是错误:

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/ipykernel_launcher.py:2: 弃用警告:面板已弃用,将在以后的时间内删除 未来版本。表示这些类型的 三维数据在数据帧上具有多索引,通过 方法,也可以使用xarray包 . Pandas提供了一个
.to_xarray()
方法来帮助自动化此转换

这是导致问题的库中的代码,我如何修复它

def getHistoricData(symbols, **options):
''' 
get data from Yahoo finance and return pandas dataframe
Will get OHLCV data frame if sinle symbol is provided. 
If many symbols are provided, it will return a wide panel

Parameters
------------
symbols : str or list  
    Yahoo finanance symbol or a list of symbols
sDate : tuple  (optional)
    start date (y,m,d)
adjust : bool
    T/[F] adjust data based on adj_close

Returns
---------
Panel

'''

assert isinstance(symbols,(list,str)), 'Input must be a string symbol or a list of symbols'

if isinstance(symbols,str):
    return getSymbolData(symbols,**options)
else:
    data = {}
    print('Downloading data:')
    p = ProgressBar(len(symbols))
    for idx,symbol in enumerate(symbols):
        p.animate(idx+1)
        data[symbol] = getSymbolData(symbol,verbose=False,**options)

    return pd.Panel(data)

我发现了这个问题,并在最新版本的库中修复了它。下面是更新的代码,以防有人有类似的问题,并希望看到如何解决这一问题

def getHistoricData(symbols, delay=0.5, **options):
'''
get data from Yahoo finance and return pandas dataframe
Will get OHLCV data frame if sinle symbol is provided.
If many symbols are provided, it will return a wide panel

Parameters
------------
symbols : str or list
    Yahoo finanance symbol or a list of symbols
sDate : tuple  (optional)
    start date (y,m,d)
adjust : bool
    T/[F] adjust data based on adj_close

Returns
---------
DataFrame, multi-index

'''

assert isinstance(symbols,(list,str)), 'Input must be a string symbol or a list of symbols'

if isinstance(symbols,str):
    return getSymbolData(symbols,**options)
else:
    data = {}
    print('Downloading data:')
    p = ProgressBar(len(symbols))
    for idx,symbol in enumerate(symbols):
        p.animate(idx+1)
        data[symbol] = getSymbolData(symbol,verbose=False,**options)
        sleep(delay)

    return pd.concat(data,axis=1, names=['symbol','ohlcv'])