2017-04-22 58 views
2

您好我有我的国家市场上所有股票数据的数据帧的数据帧,数据看起来像这样Python的子集基于变量名

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 

列北京时间具有股票名称,每行是一个特定日期的数据。 我想编写一个循环代码,用变量名创建变量是股票名称,变量是包含此股票数据的整个数据框的子集。

例如,

当我打电话变量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 

请您指点我怎么能写这样的代码

回答

1

你可以创建dictionaryDataFrames,其中密钥的名称是groupbydict 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 

编辑:

感谢好的建议DSM

dfs = dict(list(df.groupby("Ticker"))) 
+0

所以,我怎么能相应指定变量名,我想有一个变量列表[AAA,BBB,CCC]其中: AAA = dfs ['AAA'] BBB = d fs ['BBB'] .... 我目前必须手动执行,但数据帧有数百个符号,您能否建议 –

+0

嗯,我认为许多变量更好是一个字典与所有变量,所以相反'ÀAA '使用'AAA = dfs ['AAA']',''BBB'使用'AAA = dfs ['BBB']''。你需要的不是Python中的最佳实践。 – jezrael

+0

也许帮助也检查[this](http://stackoverflow.com/a/1373185/2901002) - 也可以使用'globals'和'locals',但你确定吗?在我看来,如果只需要一个字典,太多的变量是不必要的。也许你能解释为什么你需要这个?谢谢。 – jezrael