Python 多索引列数据帧的两两差分

Python 多索引列数据帧的两两差分,python,pandas,Python,Pandas,我有一个具有多索引列的数据框架,如下所示: columnIdx1 = ["M1", "M2", "M3", "M4"] columnIdx2 = ["pos", "neg"] df = pd.DataFrame(data=np.random.randn(1000, 8), columns=pd.MultiIndex.from_product([columnIdx1, columnIdx2])) 然后我用df.mean() A: 现在我想计算每个neg和pos的差值,如下所示: B: 我的第一个

我有一个具有多索引列的数据框架,如下所示:

columnIdx1 = ["M1", "M2", "M3", "M4"]
columnIdx2 = ["pos", "neg"]
df = pd.DataFrame(data=np.random.randn(1000, 8), columns=pd.MultiIndex.from_product([columnIdx1, columnIdx2]))
然后我用
df.mean()

A:

现在我想计算每个
neg
pos
的差值,如下所示:

B:

我的第一个想法是将columnIdx1列转换为行索引,但我没有找到方法:

   pos neg
M1   1   8
M2   2   7
M3   3   6
M4   4   5
用于重塑柱形,然后减去柱形:

df = df.mean().unstack()
df['diff'] = df['neg'] - df['pos']
print (df)

         neg       pos      diff
M1  0.023254  0.017009  0.006245
M2 -0.028798 -0.054146  0.025349
M3 -0.007544 -0.013178  0.005634
M4  0.049680 -0.046202  0.095882
   pos neg
M1   1   8
M2   2   7
M3   3   6
M4   4   5
df = df.mean().unstack()
df['diff'] = df['neg'] - df['pos']
print (df)

         neg       pos      diff
M1  0.023254  0.017009  0.006245
M2 -0.028798 -0.054146  0.025349
M3 -0.007544 -0.013178  0.005634
M4  0.049680 -0.046202  0.095882