首页 > 解决方案 > 如果数据框是多索引,我如何在熊猫中对特定列进行计算?

问题描述

因此,我有一个按日期(第一级)和股权(第二级)组织的多指数 df,然后对于每个股权,该股权在该日期都有一个价格。df 看起来像这样:

df]([![在此处输入图像描述] 1

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

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

进行此计算的计算效率高的方法是什么?我曾考虑过使用 for 循环,但有超过 200,000 个条目,所以我知道这将花费很长时间。

感谢您提供的任何帮助。

标签: pythonpython-3.xpandasdataframemulti-index

解决方案


'date'使用称为and 的索引级别'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。


推荐阅读