python - 减去 Pandas 数据框

标签 python python-2.7 group-by pandas dataframe

我有一个 pandas 数据框(在 Python 2.7 中),在 Time 和 Rating 上有 2 级索引,Tenor 和 Value 是数据列:

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

我有另一个数据框

In [237]: treasDF
Out[237]:
     2013-09-20 12:01:00
1M                 0.008
3M                 0.013
6M                 0.043
1Y                 0.104
2Y                 0.332
3Y                 0.688
5Y                 1.478
7Y                 2.109
10Y                2.735
30Y                3.762

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

谢谢。

最佳答案

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

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)

哪个给

df1
   a  b
0  1  2
1  1  2

df2
   A        B      
   a  b  c  a  b  c
0  1  2  3  4  5  6
1  1  2  3  1  2  3

然后使用 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

关于python - 减去 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206204/

相关文章:

python - 在 Pyodbc 中使用哪个版本的 MySQL 驱动程序

Python telnetlib 客户端似乎没有打开到服务器的 telnet 连接

python-2.7 - 谷歌云存储仅为每个文件存储 (48 B)

python - 看起来相同但编码不同的字符串

python - LogisticRegressionwithLBFGS 抛出有关不支持多项分类的错误

python - 如何通过在python中打开该文件夹中的其他文件来打开文件夹循环

mysql - 按列分组时选择零计数

group-by - 基于多列分组并在 Hive 中查找每组中的最大值

python - 为重复列表中的元素添加标签

MySQL如何在分组时有条件地排除记录