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
useAAA=dfs['AAA']
,安装BBB
使用AAA=dfs['BBB']
。您需要的不是python中的最佳实践。可能还有助于检查-是否也可以使用globals
和locals
,但您确定吗?在我看来,如果只需要一个dict,那么太多的变量是不必要的。也许你能解释一下为什么你需要这个吗?谢谢。实际上,在尝试之后,我认为你是正确的,我不应该创建太多这样的变量。在这种情况下,dict是一个非常有效的选项:Ddfs=dict(list(df.groupby(“Ticker”))
是dictcomp的替代方案。
dfs = dict(list(df.groupby("Ticker")))