pandas - Pandas:有效地用代表值替换分箱列
问题描述
我想分箱数据并为每个箱选择一个特定的聚合。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3, 4],
'B': [1, 2, 3, 4],
})
groups = pd.cut(df['A'], bins=2, labels=False)
group_reps = df.groupby([groups]).agg(A=('A', 'mean'))
# ... some magic happens here to replace values in A by group_reps ...
#
# expected result
# A, B
# 1.5, 1
# 1.5, 2
# 3.5, 3
# 3.5, 4
对于大小接近机器内存的数据,如何有效地实现这一点?
解决方案
如果你想改变一列,你可以单独处理它。此外,还transform
可以帮助您将聚合与原始索引对齐:
df['A'] = df['A'].groupby(groups).transform('mean')
推荐阅读
- python - 如何通过计算数据框中共同出现的数量来创建邻接矩阵?
- python - 具有来自同一脚本的具有不同端口号的多个套接字的 Python 程序?
- python-3.x - 自定义损失缺少梯度操作
- python - 使用 Keras 在 Tensorflow 2.0 中处理负采样的最佳方法
- sqlite - SQLITE 选择唯一行
- arrays - Excel中的Concat Arrays单元格
- angular - 如何从规范化状态删除/移除项目?
- android - 从相机拍照后,ImageView 可单击以全屏打开图像
- symfony - 用于文件上传的查询参数的 Swagger 注释
- python - 为什么实例不能从类继承属性?