2017-04-22 64 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