减去pandas数据帧

2024-05-16 19:52:59 发布

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

我有一个pandas数据框架(在Python 2.7中),具有时间和评级的两级索引,其期限和值是数据列:

Out[235]:
                  Tenor  Value
Time       Rating
2011-12-30 AAA       3M  0.343
           AAA       6M  0.404
           AAA       1Y  0.541
           AAA       2Y  0.684
           AAA       3Y  0.869
           AAA       4Y  1.254
           AAA       5Y  1.467
           AAA       7Y  2.051
           AAA       8Y  2.272
           AAA       9Y  2.575
           AAA      10Y  2.938
           AAA      15Y  3.757
           AAA      20Y  4.108
           AAA      30Y  4.377
           AA        3M  0.435
           AA        6M  0.547
           AA        1Y  0.620
           AA        2Y  0.737
           AA        3Y  0.925
           AA        4Y  1.321
           AA        5Y  1.545
           AA        7Y  2.132
           AA        8Y  2.420
           AA        9Y  2.628
           AA       10Y  3.108
           AA       15Y  3.920
           AA       20Y  4.219
           AA       30Y  4.490

我有另一个数据帧

^{pr2}$

我需要从每个多索引级别中减去treasDF,我该怎么做?我尝试了所有类型的groupby,但是失败了,比如。 ratesDF.groupby(level=1).sub(treasDF.iloc[:,0], level=1)

谢谢。在


Tags: 数据框架pandastimevalue时间outlevel
2条回答

我想您不需要groupby,下面的代码能解决您的问题吗?在

ratesDF.Value - treasDF[ratesDF.Tenor].values

我意识到这对聚会来说有点晚了,但在试图解决同样的问题时偶然发现了这个问题,我想我会留下我的解决方案,以防别人发现这个问题。在

df1 = pd.DataFrame([[1, 2], [1, 2]], index=[0,1], columns=['a', 'b'])

mcols = pd.MultiIndex.from_product([['A', 'B'], ['a', 'b', 'c']])
df2 = pd.DataFrame([[1, 2, 3, 4, 5, 6], [1, 2, 3, 1, 2, 3]], index=[0,1], columns=mcols)

这给了

^{pr2}$

然后使用substract()并指定要广播的级别

df2.subtract(df1, level=1)
   A         B       
   a  b   c  a  b   c
0  0  0 NaN  3  3 NaN
1  0  0 NaN  0  0 NaN

相关问题 更多 >