python - 如何在python中使用if语句时迭代pandas groupby对象
问题描述
我有一个看起来像这样的熊猫数据框 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 语句,因此系统不会进入第二个过滤器。
解决方案
如果你想要一个for
循环if/statements
遍历grouped
对象
for name, grouped in grouped:
if ...
推荐阅读
- node.js - 让用户将 iframe 添加到他们的个人资料的常用方法?
- ruby-on-rails - 复选框不会显示在网页上,但不会出现错误
- c++ - 将常量指针推送到 std::stack
给出编译错误 - angular - 素数树表选择未按预期工作
- java - JavaFX 折线图点操作
- python - ELMo 嵌入层与 Keras
- angular - 有没有办法使用 Angular 2 在一个 HTTP 请求中发送多个标头?
- javascript - window.location 然后 window.alert (立即关闭)(以避免在白屏时发出警报)
- php - SOAP 请求错误:SOAP 错误:服务器无法处理请求。---> MaskRequestInfo args(0) 不是字符串类型
- google-apps-script - 我的域中 Z 列中的用户时间戳