如何将带有股票代码的列添加到 DataFrame

我尝试使用 pandas_datareader 提取股票报价。这是我正在使用的代码:


import pandas_datareader.data as web

import datetime as dt

import pandas as pd


stocks=['asb.pl','plw.pl','ten.pl']


df = pd.concat([web.DataReader(stock,'stooq')[:1] for stock in stocks]).reset_index()

print(df) 的结果如下所示:


        Date    Open    High     Low   Close  Volume

0 2020-04-30    3.37    3.39    3.28    3.28  128860

1 2020-04-30  449.50  449.50  415.00  425.00   43509

2 2020-04-30  440.00  444.00  410.50  419.50   23920


如何在第一列中添加股票代码,结果如下所示:


   Symbol  Date          Open    High     Low   Close  Volume

0  asb.pl  2020-04-30    3.37    3.39    3.28    3.28  128860

1  plw.pl  2020-04-30  449.50  449.50  415.00  425.00   43509

2  ten.pl  2020-04-30  440.00  444.00  410.50  419.50   23920


潇潇雨雨
浏览 164回答 2
2回答

慕无忌1623718

您可以使用与创建 DataFrame: 相同的功能pd.concat()。它的第一个参数是要连接的 pandas Series 或 DataFrames 列表,因此stocks应首先将其转换为 Series。您可以使用 来做到这一点pd.Series(),它还需要一个name参数,您可以使用该参数来指定将成为列名的内容。最后,通过axis=1topd.concat()使其成为沿列的连接。df = pd.concat([pd.Series(stocks, name='Symbol'), df], axis=1)

收到一只叮咚

为什么不改变获取数据的方式?import datetime as dtimport pandas_datareader as pdrstocks = ['asb.pl', 'plw.pl', 'ten.pl']end = dt.datetime.now()start = end - dt.timedelta(days=2)print(start, end="\n\n")df = pdr.get_data_stooq(symbols=stocks, start=start, end=end).stack("Symbols")print(df)输出:2020-04-29 17:21:12.690845Attributes           Close    High      Low    Open  VolumeDate       Symbols                                         2020-04-30 asb.pl     3.28    3.39    3.280    3.37  128860           plw.pl   425.00  449.50  415.000  449.50   43509           ten.pl   419.50  444.00  410.500  440.00   239202020-04-29 asb.pl     3.32    3.38    3.245    3.25  144000           plw.pl   449.50  453.00  440.500  441.00   13464           ten.pl   431.00  435.00  415.500  416.50   24347我想这也更有效率。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python