我有一个熊猫数据帧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语句,因此系统不会进入第二个过滤器
如果需要通过
grouped
对象使用if/statements
循环的for
循环相关问题 更多 >
编程相关推荐