Python 3.x Python基于变量名创建数据帧子集

Python 3.x Python基于变量名创建数据帧子集,python-3.x,pandas,subset,Python 3.x,Pandas,Subset,嗨,我有一个数据框架,用于我国市场的所有股票数据,数据如下所示 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.77

嗨,我有一个数据框架,用于我国市场的所有股票数据,数据如下所示

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有股票名称,每行是一个特定日期的数据。 我想编写一个循环代码,创建变量名为stock name的变量,该变量是包含该stock数据的整个dataframe的子集

比如说,

当我调用变量BBB时,我将得到以下数据帧:

BBB


请您告知我如何编写此代码

您可以创建
数据帧
字典
,其中键是它们的名称,并且
听写理解

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")))

那么我如何相应地分配变量名呢?我想有一个变量[AAA,BBB,CCC]的列表,其中:AAA=dfs['AAA']BBB=dfs['BBB']。。。。我目前必须手动操作,但数据帧有数百个符号,你能建议吗?嗯,我认为多个变量最好是所有变量的一个dict,因此使用
AA
use
AAA=dfs['AAA']
,安装
BBB
使用
AAA=dfs['BBB']
。您需要的不是python中的最佳实践。可能还有助于检查-是否也可以使用
globals
locals
,但您确定吗?在我看来,如果只需要一个dict,那么太多的变量是不必要的。也许你能解释一下为什么你需要这个吗?谢谢。实际上,在尝试之后,我认为你是正确的,我不应该创建太多这样的变量。在这种情况下,dict是一个非常有效的选项:D
dfs=dict(list(df.groupby(“Ticker”))
是dictcomp的替代方案。
dfs = dict(list(df.groupby("Ticker")))