python - 熊猫排在 groupby 和 cut 之后
问题描述
我需要将组分成连续的、密集的、整数值的箱。这段代码是我的尝试,但它不能正常工作。看起来分组在排名之前丢失了。
groups = [1] * 8 + [2] * 8
values = [11,12,13,11,12,13,11,12, 21,22,23,24,25,26,27,28]
series = pd.Series(values, index=groups)
grouped = series.groupby(series.index)
cut = grouped.apply(pd.cut, bins=4)
ranked = cut.rank(method="dense", ascending=True)
result = ranked.astype(int)
# This is the desired result:
assert list(result) == [1,2,3,1,2,3,1,2, 1,1,2,2,3,3,4,4]
任何好的想法如何正确地做到这一点?
解决方案
改成transform
grouped.transform(lambda x : pd.cut(x, bins=4).factorize()[0]+1)
推荐阅读
- c++ - 重载与非布尔返回值的相等比较时,C++20 中的重大变化或 clang-trunk/gcc-trunk 中的回归?
- docker - 在父 docker 镜像中进行运行时配置
- php - 数组推送到对象数组
- azure-ad-b2c - 登录回调失败 w/500,如何调试原因
- python-3.x - 为什么这两个代码的输出不同?
- php - Laravel 通过 API 上传图片
- python - Python - pydriosm - Import - OSError: [WinError 126] 找不到指定的模块
- c++ - 如何在 cUrl C++ 中实现 Ftp Get in Memory 功能?
- java - 在 SWT eclipse 插件上更新用户界面的最佳技术
- python - 为什么flask_wtf.FlaskForm 上传文件会报错,说文件没有上传?