嗨,我有我所在国家/地区市场中所有股票数据的数据框,数据如下所示
Ticker Date/Time Open High Low Close Volume
AAA 7/15/2010 19.581 20.347 18.429 18.698 174100.0
BBB 7/16/2010 19.002 19.002 17.855 17.855 109200.0
BBB 7/19/2010 19.002 19.002 17.777 17.777 104900.0
CCC 7/20/2010 18.429 18.429 17.084 17.354 328700.0
CCC 7/21/2010 17.354 17.431 16.895 17.316 75800.0
Ticker 列是股票名称,每一行是一个特定日期的数据。我想编写一个循环代码,该代码创建变量名称为股票名称的变量,该变量是包含该股票数据的整个数据帧的子集。
例如,
当我调用变量 BBB 时,我会得到这个数据框:
BBB
Ticker Date/Time Open High Low Close Volume
BBB 7/16/2010 19.002 19.002 17.855 17.855 109200.0
BBB 7/19/2010 19.002 19.002 17.777 17.777 104900.0
你能建议我怎么写这段代码吗
您可以创建dictionary
的DataFrames
,其中关键是他们的名字被groupby
和dict comprehension
:
dfs = {idx:x for idx, x in df.groupby('Ticker')}
print (dfs)
{'BBB': Ticker Date/Time Open High Low Close Volume
1 BBB 7/16/2010 19.002 19.002 17.855 17.855 109200.0
2 BBB 7/19/2010 19.002 19.002 17.777 17.777 104900.0,
'CCC': Ticker Date/Time Open High Low Close Volume
3 CCC 7/20/2010 18.429 18.429 17.084 17.354 328700.0
4 CCC 7/21/2010 17.354 17.431 16.895 17.316 75800.0,
'AAA': Ticker Date/Time Open High Low Close Volume
0 AAA 7/15/2010 19.581 20.347 18.429 18.698 174100.0}
print (dfs['BBB'])
Ticker Date/Time Open High Low Close Volume
1 BBB 7/16/2010 19.002 19.002 17.855 17.855 109200.0
2 BBB 7/19/2010 19.002 19.002 17.777 17.777 104900.0
另一种解决方案:
dfs = {x:df[df['Ticker'] == x] for x in df['Ticker'].unique()}
print (dfs['BBB'])
Ticker Date/Time Open High Low Close Volume
1 BBB 7/16/2010 19.002 19.002 17.855 17.855 109200.0
2 BBB 7/19/2010 19.002 19.002 17.777 17.777 104900.0
编辑:
感谢帝斯曼的好建议:
dfs = dict(list(df.groupby("Ticker")))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句