python - 如何在熊猫中分组和过滤
问题描述
我在熊猫中有以下数据框
from_exp to_exp salary
5 7 10to12
5 7 15to20
0 3 1to3
2 5 4to6
5 9 7to8
5 10 10to12
我想看看from_exp
5 年的不同工资范围是什么。
所需的数据框
from_exp salary_range count
5 10to12 2
5 15to20 1
5 7to8 1
我正在关注熊猫,但它不起作用。
df.groupby(['from_exp','salary_range']).filter(
lambda x : x['from_exp'] == '5'
)['salary'].size()
解决方案
您需要先过滤,然后分组。您可以使用query
在一行中完成所有操作:
(df.query('from_exp == 5')
.groupby(['from_exp', 'salary'], as_index=False)
.count())
from_exp salary to_exp
0 5 10to12 2
1 5 15to20 1
2 5 7to8 1
由于预过滤步骤,在这里对“from_exp”进行分组是不必要的,但我在这里完成了它以重现您的预期输出。
如果您不特别将“from_exp”作为第一列,请value_counts
改用:
(df.query('from_exp == 5')['salary']
.value_counts()
.reset_index()
.set_axis(['salary_range', 'count'], axis=1, inplace=False))
salary_range count
0 10to12 2
1 15to20 1
2 7to8 1
推荐阅读
- matplotlib - 如何使用 matplotlib 在 3D 中绘制六边形
- rest - 邮递员请求在 Keycloak 保护的 REST API 中失败 春季安全
- api - 维基百科地理定位并没有给出所有最近的页面
- angular - 使用 PouchDB 和 Ionic 3 查找文档
- ios - 无法识别的选择器发送到实例 - 应用程序仅在发布时崩溃
- laravel - Laravel 软件包哎呀异常
- terraform-provider-aws - 如何为 AWS CodeCommit 生成 HTTPS Git 凭证?
- python - 在 Django Rest Framework 中指定相关的字符串字段
- php - 在循环中使用准备好的语句插入几行
- python - Django(或 sqlite3)更改模型的属性序列