0

我想将一列添加到与其他列具有相同结构的多索引列数据框的 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 级别(1)对齐的单级列索引数据框:

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

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

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

这是怎么做到的?

4

1 回答 1

0

我认为我们需要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-10-11T00:37:10.440 回答