Python Django:合并数据框在重叠的列上执行求和

cswi

我想合并两个具有相同列名的DataFrame。重叠的列可以添加到gheter。我有点麻烦,因为分组应该在称为“日期”的“索引”上进行,但是我无法通过使用“日期”名称来进行此索引。

实际上,我只需要索引(Date)所有股票的“ Adj Close”总和即可

我试过了:

data.join(temp, how='outer')

返回: “ ValueError:列重叠,但未指定后缀:Index(['Open','High','Low','Close','Adj Close','Volume'],dtype ='object')”

data = pd.concat([data, temp]).groupby([data.index, temp.index], as_index=True).sum(axis=1)

返回: “石斑鱼和轴的长度必须相同

data = pd.merge(data, temp, left_index=True, right_index=True)['Adj Close'].sum(axis=1, skipna=True).astype(np.int64)

返回: “ KeyError:'Adj Close'”

def overview(request):
    stocks = Stock.objects.all()
    data = None

    for stock in stocks:
        if data is None:
            data = yf.download(stock.ticker, start=stock.trade_date, period="ytd")
        else:
            temp = yf.download(stock.ticker, start=stock.trade_date, period="ytd")
            data.join(temp, how='outer')

DataFrame输出1

[*********************100%***********************]  1 of 1 completed
                  Open        High  ...   Adj Close     Volume
Date                                ...                       
2019-09-19   55.502499   55.939999  ...   54.697304   88242400
2019-09-20   55.345001   55.639999  ...   53.897728  221652400
2019-09-23   54.737499   54.959999  ...   54.142803   76662000
2019-09-24   55.257500   55.622501  ...   53.885353  124763200
2019-09-25   54.637501   55.375000  ...   54.714626   87613600
...                ...         ...  ...         ...        ...
2020-09-10  120.360001  120.500000  ...  113.489998  182274400
2020-09-11  114.570000  115.230003  ...  112.000000  180860300
2020-09-14  114.720001  115.930000  ...  115.360001  140150100
2020-09-15  118.330002  118.830002  ...  115.540001  184642000
2020-09-16  115.230003  116.000000  ...  112.129997  154679000

[251 rows x 6 columns]

数据框输出2

[*********************100%***********************]  1 of 1 completed
                   Open         High  ...    Adj Close   Volume
Date                                  ...                      
2020-09-03  1699.520020  1700.000000  ...  1629.510010  3186300
2020-09-04  1609.000000  1634.989990  ...  1581.209961  2792500
2020-09-08  1525.000000  1555.550049  ...  1523.599976  2701600
2020-09-09  1548.900024  1558.719971  ...  1547.229980  1962100
2020-09-10  1550.180054  1573.660034  ...  1526.050049  1651200
2020-09-11  1528.150024  1538.699951  ...  1515.760010  1535300
2020-09-14  1531.650024  1557.000000  ...  1508.829956  2133000
2020-09-15  1527.890015  1550.989990  ...  1535.119995  1152100
2020-09-16  1542.479980  1554.369995  ...  1512.089966  1106400
Zaraki Kenpachi

假设您有2 df,例如:

df1 = pd.DataFrame({'Adj Close':[1, 2]}, index=['2019-09-19','2019-09-20'])
df2 = pd.DataFrame({'Adj Close':[3, 4, 5]}, index=['2019-09-19','2019-09-20','2019-09-21'])

df1

            Adj Close
2019-09-19          1
2019-09-20          2

df2

            Adj Close
2019-09-19          3
2019-09-20          4
2019-09-21          5

然后,您可以合并到一个df中:

df = pd.concat([df1, df2])


            Adj Close
2019-09-19          1
2019-09-20          2
2019-09-19          3
2019-09-20          4
2019-09-21          5

并用总和使groupby:

result = df.groupby(df.index).sum()

            Adj Close
2019-09-19          4
2019-09-20          6
2019-09-21          5

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章