2

我有一个包含这些值的 MultiIndex DataFrame:

                      AAPL
           minor          
2007-09-14 OC     0.024436
2007-09-15 CC     0.030293
           CO     0.017518
           OC     0.024688
           OO     0.031835

# to_dict():

{'AAPL': {(<Timestamp: 2007-09-14 00:00:00>, 'OC'): 0.024436265475779286,
  (<Timestamp: 2007-09-15 00:00:00>, 'CC'): 0.030293017084353703,
  (<Timestamp: 2007-09-15 00:00:00>, 'CO'): 0.017518449703066673,
  (<Timestamp: 2007-09-15 00:00:00>, 'OC'): 0.024688182799779634,
  (<Timestamp: 2007-09-15 00:00:00>, 'OO'): 0.031834725061579666}}

--

和一个包含这些值的系列:

CC    15.874508
CO    18.590320
OC    30.503468
OO    15.874508

# to_dict():

{'CC': 15.874507866387544,
 'CO': 18.590320061795602,
 'OC': 30.503467646507644,
 'OO': 15.874507866387544}

我想将所有次要索引 CC 值乘以系列中的 CC 值,并且与其他值相同。我在这里看到了另一个问题,它给了我 .mul 方法,但是当我尝试这样做时,即使使用 level='minor',它也会告诉我:

TypeError:只能与其他分层索引对象一起调用

我已经取消堆叠次要索引以使其成为列,并指定 level='minor', axis='columns' 具有相同的结果。

最后,最终结果是能够在主要列是几个股票的 DataFrame 上运行相同的计算——在这种情况下,.mul() 是否也适用于每个股票?

感谢你的协助!

4

1 回答 1

3

基于系列的它适用于level

df["C01"].mul(s, level=1)

major       minor
2007-09-14  OC       0.745391
2007-09-15  CC       0.480887
            CO       0.325674
            OC       0.753075
            OO       0.505361

然后你可以将它再次插入到你的 DataFrame 中。但这也应该适用于 DataFrames,也许你可以建议它。

于 2012-12-03T16:56:40.940 回答