使用Pandas计算多索引跨日期值的乘积

2024-04-27 05:22:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从事一个项目,需要计算跨日期数据集的链接回报率。我的当前数据集(df)是一个如下所示的数据帧:

  asof_date     index_id       ror
  2015-01-31      x            0.004
  2015-01-31      y            0.03
  2015-01-31      z            0.4
  2015-02-28      x            0.001
  2015-02-28      y            0.02
  2015-02-28      z            0.1
  ....
  2015-06-30      x            0.1
  2015-06-30      y            -0.02
  2015-06-30      z            0.4

df的当前索引是一个多级索引,由一个of\ u date和一个index\ u id组成

我想得到一个链接返回生产这样的东西:

       index_id       linked_ror
         x             0.5
         y             0.48
         z             0.23

其中,链接的ror是日期上ror与索引id的乘积。 我已经看了各种各样的方法,似乎不知道如何才能做到这一点,我会感激如果有人能给我一些启示。你知道吗

谢谢。你知道吗


Tags: of数据项目方法iddfdateindex
1条回答
网友
1楼 · 发布于 2024-04-27 05:22:32

您可以在level='index_id'上使用groupby,然后对每个组进行聚合以计算乘积。你知道吗

import pandas as pd
import numpy as np

# some artificial data
# ==============================
np.random.randn(0)
dates = ['2015-01-31','2015-02-28', '2015-03-31']
idx_id = list('xyz')
multi_index = pd.MultiIndex.from_product([dates, idx_id], names=['asof_date', 'index_id'])
df = pd.DataFrame(np.random.randint(1,5,9), index=multi_index, columns=['ror'])
print(df)

                     ror
asof_date  index_id     
2015-01-31 x           4
           y           2
           z           2
2015-02-28 x           2
           y           1
           z           3
2015-03-31 x           2
           y           1
           z           3

# processing
# ==========================
df.groupby(level='index_id')['ror'].agg(np.prod)

index_id
x    16
y     2
z    18
Name: ror, dtype: int64

相关问题 更多 >