【问题标题】:Assignments on new MultiIndex columns given only level 0 column selectors and aligned level 1仅给定级别 0 列选择器和对齐级别 1 的新 MultiIndex 列的分配
【发布时间】:2021-01-25 16:29:49
【问题描述】:

我想向多索引列数据框的 level(0) 添加一列,该列与其他列具有相同的结构,即:level(1) 索引相同:

In [151]: df
Out[151]: 
first        bar                 baz           
second       one       two       one       two 
A       0.487880 -0.487661 -1.030176  0.100813 
B       0.267913  1.918923  0.132791  0.178503
C       1.550526 -0.312235 -1.177689 -0.081596 

虽然我可以进行正常操作并获得与 df 的 level(1) 对齐的单级列索引数据框:

In [152]: df['bar'] - df['baz']

我无法执行普通的列分配 level(0) 来创建 level(0) 列,其 level(1) 由生成的(对齐的)数据框填充:

In [153]: df['foo'] = df['bar'] - df['baz']

这是怎么做到的?

【问题讨论】:

    标签: pandas multi-index compound-assignment


    【解决方案1】:

    我认为我们需要在结果中创建多个index,然后返回join

    s = df['bar'] - df['baz']
    s.columns = pd.MultiIndex.from_product([['foo'],s.columns])
    df = df.join(s)
    df
                 bar                 baz                 foo          
                 one       two       one       two       one       two
    second                                                            
    A       0.487880 -0.487661 -1.030176  0.100813  1.518056 -0.588474
    B       0.267913  1.918923  0.132791  0.178503  0.135122  1.740420
    C       1.550526 -0.312235 -1.177689 -0.081596  2.728215 -0.230639
    

    【讨论】:

      猜你喜欢
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 2018-08-14
      • 2020-05-19
      • 2019-10-18
      相关资源
      最近更新 更多