首页 > 解决方案 > 聚合属于相同因变量的点

问题描述

我有一个保存测量结果的 DataFrame。自变量是ab,因变量是xy。每个单独的结果都有一个整数索引,存储在idx.

一个 b 编号 X 是的
0 0 0 0.1 1
0 0 1 0.3 3
0 1 0 1.2 2
0 1 1 1.4 4
1 0 0 2.3 3
1 0 1 2.5 5
1 1 0 3.4 4
1 1 1 3.6 6

现在,我想执行聚合,例如“对于每个ab对,计算平均值xy”。预期结果是:

一个 b X 是的
0 0 0.2 2
0 1 1.3 3
1 0 2.4 4
1 1 3.5 5

目前,我正在这样做:

df = pd.DataFrame([
    #
    dict(a=0, b=0, idx=0, x=0.1, y=1), 
    dict(a=0, b=0, idx=1, x=0.3, y=3), 
    dict(a=0, b=1, idx=0, x=1.2, y=2), 
    dict(a=0, b=1, idx=1, x=1.4, y=4), 
    dict(a=1, b=0, idx=0, x=2.3, y=3), 
    dict(a=1, b=0, idx=1, x=2.5, y=5), 
    dict(a=1, b=1, idx=0, x=3.4, y=4), 
    dict(a=1, b=1, idx=1, x=3.6, y=6), 
    ])

df = df.set_index(['a', 'b'])
df = pd.pivot_table(df, index=df.index.names)
df = df[np.delete(df.columns.values, np.where(df.columns.values == 'idx'))]

但我想知道是否有一个内置函数可以做到这一点..

标签: pythonpandasdataframedata-science

解决方案


尝试:

print(df.drop("idx", 1).groupby(["a", "b"], as_index=False).mean())

印刷:

   a  b    x  y
0  0  0  0.2  2
1  0  1  1.3  3
2  1  0  2.4  4
3  1  1  3.5  5

推荐阅读