python - 如果数据框是多索引,我如何在熊猫中对特定列进行计算?
问题描述
因此,我有一个按日期(第一级)和股权(第二级)组织的多指数 df,然后对于每个股权,该股权在该日期都有一个价格。df 看起来像这样:
] 1
现在日期从 2019 年一直到 2020 年。
我要做的计算是在 closing_price 列上,基本计算如下:(今天收盘价/5天前收盘价)*100
进行此计算的计算效率高的方法是什么?我曾考虑过使用 for 循环,但有超过 200,000 个条目,所以我知道这将花费很长时间。
感谢您提供的任何帮助。
解决方案
'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。
推荐阅读
- single-sign-on - Alfresco 无法使用 CAS SSO 连接到存储库
- sql - 正则表达式过滤带点和不带点的数字
- python - Flask-SQLAlchemy ORM/GeoAlchemy2 结果到字典,最终是 JSON
- css - ReactJs - 对齐导航栏项目
- javascript - 如何显示 href 的 react-intl 翻译结果?
- javascript - 在 JavaScript 中对数组进行排序
- scala - SBT插件——编译前执行自定义任务
- postgresql - 删除 RDS Postgres DB 时,是否清除连接的 Redis Elasticache?
- rest - NetBeans 生成的 REST 服务适用于 XML 请求,但不适用于 JSON
- javascript - 使用 window.hasOwnProperty()