首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找组中的缺失值

如何查找组中的缺失值
EN

Stack Overflow用户
提问于 2019-07-23 10:57:47
回答 3查看 115关注 0票数 1

我有一个很大的餐馆检查数据集。一次检查将触发多个代码违规。我想找出是否有任何检查不包含特定的代码违规(作为有害程序的证据)。我把数据放在Pandas数据框里。

我尝试根据是否包括有害生物的违规行为来分离数据帧。我试着按违规代码分组。似乎找不到答案。

将有害程序违规设置为"3A“时,数据可能如下所示:

代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame(data = {
    'visit' : ['1', '1', '1', '2', '2', '3', '3'],
    'violation' : ['3A', '4B', '5C', '3A', '6C', '7D', '8E']
    })
代码语言:javascript
复制
  visit violation
0     1        3A
1     1        4B
2     1        5C
3     2        3A
4     2        6C
5     3        7D
6     3        8E

我想用这个来结束:

代码语言:javascript
复制
result = pd.DataFrame(data = {
    'visit' : ['3', '3'], 'violation' : ['7D', '8E']
    })
代码语言:javascript
复制
Out[15]: 
  visit violation
0     3        7D
1     3        8E
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-23 11:06:40

尝试使用:

代码语言:javascript
复制
value = '3A'
print(df.groupby('visit').filter(lambda x: all(value != i for i in x['violation'])))

输出:

代码语言:javascript
复制
  violation visit
5        7D     3
6        8E     3
票数 1
EN

Stack Overflow用户

发布于 2019-07-23 11:08:59

另一种方法是:

代码语言:javascript
复制
violation_visits = df[df['violation']=='3A']['visit'].unique()
df[~df['visit'].isin(violation_visits.tolist())]

Out[16]: 
  visit violation
5     3        7D
6     3        8E
票数 0
EN

Stack Overflow用户

发布于 2019-07-23 11:15:11

使用过滤器的一种方式

代码语言:javascript
复制
df.groupby('visit').filter(lambda x : ~x['violation'].eq('3A').any())
  visit violation
5     3        7D
6     3        8E

使用transform的另一种方式

代码语言:javascript
复制
df[df.violation.ne('3A').groupby(df.visit).transform('all')]
  visit violation
5     3        7D
6     3        8E
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57156056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档