python - 如何在不删除所有数据的情况下将列表转换为数据框?

标签 python python-3.x pandas dataframe

我正在测试下面的代码。

import pandas as pd
from pandas_datareader import data as wb

tickers = ['SBUX', 'AAPL', 'MSFT']
AllData = []

for ticker in tickers:
    print('appending prices for ' + ticker)
    tickers = wb.DataReader(ticker,start='2018-7-26',data_source='yahoo')
    AllData.append(tickers)

AllData = pd.DataFrame(AllData)
print(AllData)

当我将列表转换为数据框时,所有内容都会被删除。

此外,我正在尝试将股票代码变量插入到相关位置,这样我就可以分辨出哪个是哪个。我希望最终结果是这样的。

   date         ticker   adj_close
0  2018-02-13   MSFT     164.34
1  2018-02-12   MSFT     162.71
...
265  2018-02-13   SBUX     81.30
266  2018-02-12   SBUX     82.11

我怎样才能做到这一点? TIA。

最佳答案

您的代码存在一些问题。

首先,您通过 fortickersintickers: 迭代 tickers,但随后通过 tickers = wb.DataReader(. ..)。切勿更改要迭代的对象。虽然在本例中这实际上不会引起问题,但这显然是不可取的。

其次,AllData 是一个包含三个数据帧的列表,其中没有一个数据帧引用其相关的代码。您可以在此阶段连接,但您应该首先通过 .assign(ticker) 将股票代码作为附加列包含到数据帧中。

price_data = []
for ticker in tickers:
    prices = wb.DataReader(ticker, start='2018-7-26', data_source='yahoo')[['Adj Close']]
    price_data.append(prices.assign(ticker=ticker)[['ticker', 'Adj Close']])

df = pd.concat(price_data)
>>> df
           ticker   Adj Close
Date                         
2018-07-26   SBUX   50.324104
2018-07-27   SBUX   51.008789
2018-07-30   SBUX   50.764256
...

>>> df.set_index('ticker', append=True).unstack('ticker')
             Adj Close                       
ticker            AAPL        MSFT       SBUX
Date                                         
2018-07-26  191.298080  107.868378  50.324104
2018-07-27  188.116501  105.959373  51.008789
2018-07-30  187.062546  103.686295  50.764256
...

关于python - 如何在不删除所有数据的情况下将列表转换为数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57235514/

相关文章:

python - 有没有办法 deiconify() 或最大化 pyGame 窗口?

python - 使用 Flask-Login 临时覆盖来自特定重定向路由的登录消息

python - r'string'和python中的普通 'string'有什么区别?

python - 我是否需要将 dist 文件夹提交到 git 以便能够使用 git 中的 pip 安装软件包?

python - Python多处理中写入共享内存(列表)的同步

python-3.x - Gcloud 应用程序部署出现不受支持的 Python 2.5 运行时错误

python - 在 Pandas DataFrame 中查找数字最接近的行

python - 将 Pandas DateTimeIndex 转换为 Unix 时间?

pandas - 删除 Pandas pd.to_dict 中的空白键条目

python - 如何选择在 pandas 中使用 groupby 第一次出现值的行,以及随后出现的第一个值