python - 聚合属于相同因变量的点
问题描述
我有一个保存测量结果的 DataFrame。自变量是a
和b
,因变量是x
和y
。每个单独的结果都有一个整数索引,存储在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 |
现在,我想执行聚合,例如“对于每个a
和b
对,计算平均值x
和y
”。预期结果是:
一个 | 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'))]
但我想知道是否有一个内置函数可以做到这一点..
解决方案
尝试:
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
推荐阅读
- c++ - delete[] 的析构函数问题
- android - 外投影类型禁止使用方法
- azure - VMSS 自定义映像的优缺点
- angular - 在 Edge 中渲染 PDF,在嵌入中渲染 IE11
- javascript - 在 React 中播放依赖于状态的音频文件
- c# - Microsoft.CognitiveServices.Speech.SpeechRecognizer - 获取文件中结果的时间偏移,持续识别
- mysql - 插入两个表不起作用。有正确的方法吗?
- python - 计算行数并以更少的数量打印
- vim - 在vim中替换匹配分隔符内的单个字符
- java - 在 ListView 中从 XML 资源文件添加项目