如果数据框为多索引,如何在特定列的熊猫中进行计算?

问题描述 投票:0回答:1

因此,我有一个多重索引df,该索引按日期(第一级)和资产(第二级)进行组织,然后对于每个资产,在那个日期都有该资产的价格。 df看起来像这样:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS96WWJEcS5wbmcifQ==” alt =“ df]([![在此处输入图像描述”>] 1

现在日期从2019年一直到2020年。

我要进行的计算在closeing_price列上,基本计算如下:(今天的收盘价/ 5天前的收盘价)* 100

什么是进行此计算的有效计算方式?香港专业教育学院曾考虑使用for循环,但有超过200,000个条目,因此我知道这将永远存在。

感谢您提供的任何帮助。

python python-3.x pandas dataframe multi-index
1个回答
0
投票

[索引级别分别为'date''equity'

import datetime as dt 
import functools as ft
import numpy as np

the_dates = [dt.date.today(),dt.date.today() - dt.timedelta(days=5)]
data[data.index.isin(the_dates,level='date')].\
     groupby(level='equity')['closing_price'].\
     apply(lambda x: ft.reduce(np.divide,x) * 100) 

如果需要反转操作数,则可能需要对DataFrame进行重新排序。

© www.soinside.com 2019 - 2024. All rights reserved.