无法获取数据,使用包 yfinance 按格式分组下载到熊猫数据框中,仅适用于我的子列表中的特定代码

Posted

技术标签:

【中文标题】无法获取数据,使用包 yfinance 按格式分组下载到熊猫数据框中,仅适用于我的子列表中的特定代码【英文标题】:Not able to get data, downloaded in group by format using package yfinance, into pandas dataframe only for specific tickers in my sub list 【发布时间】:2020-07-24 22:29:21 【问题描述】:

我正在使用 python 包 yfinance 下载数据,下面是我为此使用的代码:

# pip install yfinance

import yfinance as yf

# list of tickers for which data is to be downloaded
myLst = ['TSLA', 'MSFT', 'FB', 'IBM', 'AAPL', 'WFC', 'BAC', 'INTC', 'PRLAX', 'QASGX', 'HISFX']

# from which date?
start_date = '2018-01-01'

# to which date?
end_date = '2019-12-31'

# download the data
mydf = yf.download(myLst, start = start_date, end = end_date, group_by = "ticker")

这会返回数据框中的数据,如下所示:

但我无法将这些数据放入这样的数据框中:

虽然我尝试过这样的事情:

assets = ['IBM', 'MSFT', 'FB']

assetsDF = pd.DataFrame(
    a: x['Close'] for x in mydf[a]['Close'] for a in assets
)

但我知道我在这里不正确。有什么解决办法吗?

【问题讨论】:

这能回答你的问题吗? Pandas column multi-index to rows 那是链接到其他类似的问题。请参阅屏幕右侧的链接和相关 您可能会发现How to deal with multi-level column names downloaded with yfinance? 很有帮助 【参考方案1】:

在这里回答:pandas dataframe select columns in multiindex

mydf.iloc[:, mydf.columns.get_level_values(1)=='Close']

@EDIT:删除无用的列级别

mydf.columns = mydf.columns.droplevel(1)

【讨论】:

非常感谢@ct30 ,但这仍然没有返回所需的格式。为什么还有一行“关闭”?我正在寻找的是带有日期和资产列表中代码名称的 col 标题。 :)

以上是关于无法获取数据,使用包 yfinance 按格式分组下载到熊猫数据框中,仅适用于我的子列表中的特定代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 Yfinance 获取市值数据

Mongodb,按日期差异分组并获取小时

如何按 id 对数据进行分组并使用 SQL 获取中值?

如何从 yfinance 获取特定时间和日期的 1 分钟价格数据?

当我从 api (yfinance) 获取数据时,Numpy Array 缺少日期

Linq,EF Core - 按一个字段分组并使用其他字段从其他表中获取数据列表