Python-按组分开的数据框

时间:2019-12-24 01:35:15

标签: python pandas dataframe group-by

我正在尝试下载多个库存数据并将其自动编译为不同的数据框。到目前为止,我已经能够将所有信息放入一个数据框中,然后用股票代码将其分开。但是,当我尝试将其分为不同的数据框时,我的代码将仅包含第一个符号的数据。

我的下面的代码:

start = dt.datetime(2016,8,17)
end = dt.datetime(2019,12,23)
list_of_tickers = ['DELL', 'GRPN', 'EBS']
p = web.DataReader(list_of_tickers, 'stooq', start, end)
res = p.stack().reset_index()
res.columns.names = [None]
res.index.names = ['ID']

stockdata = res.groupby('Symbols')
for Symbols, Symbols_df in stockdata:
    data = pd.DataFrame(Symbols_df)

输出:

1    2014-12-24    GRPN  7.8900  8.0710  7.8700  8.01   4034314.0
3    2014-12-26    GRPN  8.1400  8.4300  7.9400  7.95  17556775.0
5    2014-12-29    GRPN  8.2500  8.4300  8.1000  8.13  10452505.0
7    2014-12-30    GRPN  8.2200  8.3100  8.1200  8.21   9087772.0
             ...     ...     ...     ...     ...   ...         ...
2754 2019-12-18    GRPN  2.3900  2.4400  2.3800  2.42   4646022.0
2757 2019-12-19    GRPN  2.2750  2.3996  2.2400  2.39  11905805.0
2760 2019-12-20    GRPN  2.2300  2.2900  2.2100  2.28  11355706.0
2763 2019-12-23    GRPN  2.2550  2.2700  2.1700  2.25   6493660.0

但是我想要的输出将是3个不同的数据框,其中每个将是不同股票的信息。

有什么想法吗?

谢谢!

编辑:有关更多信息,将来的目标是将该库存数据上载到sql服务器,提示每个数据框应该唯一。

除非有一种方法可以做到不分离?

1 个答案:

答案 0 :(得分:0)

此示例可能可以为您提供帮助:

import pandas as pd
from io import StringIO

data = """
A,B,C
5d8a,N,DELL
5d8b,A,DELL
5d8c,B,GRPN
5d8b,C,GRPN
5d8f,Y,EBS
5d8b,X,EBS
"""

df = pd.read_csv(StringIO(data), sep=',')
for x, y in df.groupby('C'):
    print(y)

结果:

#Df1
      A  B     C
0  5d8a  N  DELL
1  5d8b  A  DELL
#Df2
      A  B    C
4  5d8f  Y  EBS
5  5d8b  X  EBS
#Df3
      A  B     C
2  5d8c  B  GRPN
3  5d8b  C  GRPN