Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向数据帧添加标签列_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 向数据帧添加标签列

Python 向数据帧添加标签列,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个数据框,在那里我得到股票数据(OHLC)和日期作为指数。但是,这里没有显示股票代码名称。 因此,数据如下所示: open high low close volume date 2013-10-11 63.7003 64.5963 63.4609 64.4619 66934938 2013

我有一个数据框,在那里我得到股票数据(OHLC)和日期作为指数。但是,这里没有显示股票代码名称。 因此,数据如下所示:

                open      high       low     close     volume
date                                                         
2013-10-11   63.7003   64.5963   63.4609   64.4619   66934938
2013-10-14   64.0718   65.0855   64.0090   64.8841   65474542
2013-10-15   65.0757   65.6637   64.8161   65.2294   80018603
2013-10-16   65.5054   65.7330   65.3014   65.5478   62775013
2013-10-17   65.3995   66.0273   65.3602   65.9907   63398335
2013-10-18   66.1856   66.6133   66.1490   66.5649   72635570
我有一个股票代码符号列表,我正在运行for循环以获得相同的代码,然后使用concat/append最终获得数据。但是,我想在这里添加股票代码符号。我怎么做

以下是最终输出:

                open      high       low     close     volume   ticker
date                                                         
2013-10-11   63.7003   64.5963   63.4609   64.4619   66934938   AAPL
2013-10-14   64.0718   65.0855   64.0090   64.8841   65474542   AAPL
2013-10-15   65.0757   65.6637   64.8161   65.2294   80018603   AAPL
2013-10-16   65.5054   65.7330   65.3014   65.5478   62775013   AAPL
2013-10-17   65.3995   66.0273   65.3602   65.9907   63398335   AAPL
.................
.................
.................
.................
2013-10-11  153.0422  154.3197  152.9154  154.2654  104967037   SPY
2013-10-14  153.3140  155.0083  153.1962  154.8815  111901876   SPY
2013-10-15  154.4919  155.0718  153.5496  153.7580  153958055   SPY
2013-10-16  154.6822  155.9869  154.6051  155.9053  161058684   SPY
2013-10-17  155.2711  157.0379  155.2439  156.9473  129004482   SPY

注:我正在使用iexfinance库获取历史价格。

我不熟悉
iexfinance
库。但是假设您有一个神奇的函数
get\u data\u from\u ticker
,顾名思义,该函数可以作为
pd.DataFrame
对象获取给定ticker输入的数据

给定一个列表
tickers
,您当前的流程可能如下所示:

dfs = []
for ticker in tickers:
    data = get_data_from_ticker(ticker)
    dfs.append(data)
df = pd.concat(dfs)
如果您的数据帧中没有存储股票代码信息,那么这并不是特别有用。因此,您可以使用添加相应的系列:

dfs = []
for ticker in tickers:
    data = get_data_from_ticker(ticker)
    dfs.append(data.assign(ticker=ticker))
df = pd.concat(dfs)
最后,通过使用列表理解,您可以使这更有效:

dfs = [get_data_from_ticker(ticker).assign(ticker=ticker) for ticker in tickers]

df = pd.concat(dfs)

您也可以考虑使用生成器表达式而不是列表理解,将迭代传递给 Pd.CONTAG/COD>。在开始进行任何进一步的处理之前,这应该会将脚本的内存占用减少大约2倍。谢谢@jpp,它非常有用。当我标记一些数据帧中不存在的值时,我总是遇到问题。我认为“分配”是一个很好的选择。