我在excel中有一个数据集,如下所示。
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我试图过滤一些用户基于特定的条件。
管理员和代理不能在一个组织中有多个名称。
一个组织可以有许多同名的终端用户(所以希望保持最终用户的原样)。
从昨天开始,我试了很多东西,但没有运气。以下是我正在尝试的
df.loc[(df['role'] == 'agent' ) | (df['role'] == 'admin' ) | (~df['org'] )]但是上面的代码正是将行作为输入返回。
请帮我解决这个问题
预期输出
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发布于 2021-02-09 06:44:18
使用Series.isin与DataFrame.duplicated一起删除每3列重复的agent, admin:
df1 = df[~(df['role'].isin(['agent','admin']) & df[['org', 'role', 'name']].duplicated())]如果只有3栏:
df1 = df[~(df['role'].isin(['agent','admin']) & df.duplicated())]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 123https://stackoverflow.com/questions/66114119
复制相似问题