首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大熊猫:根据某些条件移除重复的行

大熊猫:根据某些条件移除重复的行
EN

Stack Overflow用户
提问于 2021-02-09 06:38:58
回答 1查看 47关注 0票数 1

我在excel中有一个数据集,如下所示。

代码语言:javascript
复制
name,role,org
abc,admin,123
abc,agent,123
abc,end-user,123
abc,admin,124
abc,admin,123
bcd,admin,125
abc,admin,126
abc,agent,127
abc,agent,123
abc,end-user,130
abc,end-user,130
abc,agent,123
bc,agent,123
bc,admin,123
vcf,end-user,123

我试图过滤一些用户基于特定的条件。

管理员和代理不能在一个组织中有多个名称。

一个组织可以有许多同名的终端用户(所以希望保持最终用户的原样)。

从昨天开始,我试了很多东西,但没有运气。以下是我正在尝试的

代码语言:javascript
复制
df.loc[(df['role'] == 'agent' ) | (df['role'] == 'admin' ) | (~df['org'] )]

但是上面的代码正是将行作为输入返回。

请帮我解决这个问题

预期输出

代码语言:javascript
复制
name,role,org
abc,admin,123
abc,agent,123
abc,end-user,123
abc,admin,124
bcd,admin,125
abc,admin,126
abc,agent,127
abc,end-user,130
abc,end-user,130
bc,agent,123
bc,admin,123
vcf,end-user,123
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-09 06:44:18

使用Series.isinDataFrame.duplicated一起删除每3列重复的agent, admin

代码语言:javascript
复制
df1 = df[~(df['role'].isin(['agent','admin']) & df[['org', 'role', 'name']].duplicated())]

如果只有3栏:

代码语言:javascript
复制
df1 = df[~(df['role'].isin(['agent','admin']) & df.duplicated())]

代码语言:javascript
复制
print (df1)
   name      role  org
0   abc     admin  123
1   abc     agent  123
2   abc  end-user  123
3   abc     admin  124
5   bcd     admin  125
6   abc     admin  126
7   abc     agent  127
9   abc  end-user  130
10  abc  end-user  130
12   bc     agent  123
13   bc     admin  123
14  vcf  end-user  123
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66114119

复制
相关文章

相似问题

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