【问题标题】:How to calculate the variance of dataframe in this format?如何计算这种格式的数据帧的方差?
【发布时间】:2021-10-08 02:20:43
【问题描述】:

这里我有一个简化的数据框(真实的格式相同,但只是放大了)

import pandas as pd
import numpy as np

row = (1, 2)
columns = ["x", "y", "x", "y", "x", "y", "x", "y"]
data = ([10, 2, 8, 1.5, 9, 2, 11, 1.6], [8, 3, 7.5, 2.2, 9, 2, 8.6, 2.3])

df = pd.DataFrame(data, index = row, columns = columns)

我想计算1、2这两个x、y的方差,理想的格式是

感谢任何提示或帮助

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    试试这个 -

    1. Unstack 以获取 x、y 列作为索引
    2. 在水平 [x,y] 和 [1,2] 上分组并计算方差。
    3. 取消堆叠并转置以获得 [x,y] 作为列。
    df.unstack().groupby(level=[0,1]).var().unstack().T
    
              x         y
    1  1.666667  0.069167
    2  0.435833  0.189167
    

    【讨论】:

    • 首先谢谢。请问你的“level = [0, 1]”是什么意思?
    • 所以你已经有 1,2 作为索引。当您使用 unstack 时,您会得到 [x,y] 列也成为索引。因此,要对您提到的多索引数组进行分组,您希望在级别 0 上使用 grouby,即 x,y 和级别 1,即 1,2
    • 单独打印df.unstack(),我会清楚我指的是什么级别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多