Pandas计算多列数据中某一列的平均值减去另一列的值

3
例如,我有以下数据框:
                       BTC               ETH
time(index)      high      low     high        low 
     1            3         1       4           2
     2            4         1       4           1

我希望在索引上,计算每一列之间的差值。

例如:

                      BTC                ETH
                      2.5                2.5

有没有使用 pandas 的方法?

1个回答

4

使用xs函数来选择第二层的多级索引,使用sub函数进行减法操作,并计算均值mean

s = df.xs('high', axis=1, level=1).sub(df.xs('low', axis=1, level=1)).mean()
print (s)
BTC    2.5
ETH    2.5
dtype: float64

如果想要将一个行 DataFrame 添加,可以使用 to_frameT:

df = s.to_frame().T
print (df)
   BTC  ETH
0  2.5  2.5

或者使用agg函数:

df = df.xs('high', axis=1, level=1).sub(df.xs('low', axis=1, level=1)).agg(['mean'])
print (df)
      BTC  ETH
mean  2.5  2.5

细节:

print (df.xs('high', axis=1, level=1))
   BTC  ETH
1    3    4
2    4    4

print (df.xs('high', axis=1, level=1).sub(df.xs('low', axis=1, level=1)))
   BTC  ETH
1    2    2
2    3    3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接