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

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

你能建议我怎么写这段代码吗

耶斯列

您可以创建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

编辑:

感谢帝斯曼的好建议:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章