如何在python中使用if语句时迭代pandas groupby对象

2024-07-25 06:01:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧df,看起来像这样:

| source_num| source_date| text      | category    |location    | source |
+---------+------------+-------------+-------------+------------+--------+---
|  0      | 15/12/2020 | text1       | cat 1       | loc1       |soucrce1|
|  1      | 15/12/2020 | text2       | cat 2       | loc2       |source 2|
|  2      | 15/12/2020 | text3       | cat 3       | loc2       |source 3|
|  3      | 15/12/2020 | text4       | cat 2       | loc3       |source 2|
| ...     | ...        | ...         |             |            |        |

运行GroupBy函数时 然后过滤位置中的特定值,返回正确答案

grouped = df.groupby(['category','source_num',"source","location"], as_index = False).aggregate('sum')

 grouped.loc[grouped["location"] == "loc2"]

我的问题是,如何执行一个以上的过滤器:

第一个过滤器:

grouped.loc[grouped["location"] == "loc2"]

第二个过滤器:

grouped.loc[grouped["location"] == "loc2" & grouped["category"] .str.contains('cat1')]

第三个过滤器: ....

我想我可以通过使用if/else语句迭代groupby来执行上述过滤

基于第一个和第二个过滤器的过滤后的预期结果:

| source_num| source_date| text      | category    |location    | source |
+---------+------------+-------------+-------------+------------+--------+---
|  0      | 15/12/2020 | text2       | cat 2       | loc2       |soucrce2|
|  1      | 15/12/2020 | text3       | cat 3       | loc2       |source 3|

其中第一个过滤器已完成,第二个过滤器未满足if语句,因此系统不会进入第二个过滤器


Tags: text过滤器sourcedfdatelocationnumloc