我有一个X角色(角色为“ A”)的数据框:
Friend Role
Alice A
Bob A
Cooper B
Don C
我想对该数据框进行子集化,并仅保留其中朋友也具有角色“ A”的那些行。此外,如果人X的角色为B或C,我想保留角色不是'A'的行。
因此,如果人X拥有A,则结果将是:
Friend Role
Alice A
Bob A
如果X人的角色为“ B”或“ C”,则结果为:
Friend Role
Cooper B
Don C
如何在Python中实现?
编辑:基于答案,我意识到我应该更具体。我不想对规则进行硬编码。本质上,我们可以有一个对象“ PersonXRole”,它可以是A,B或C。基于该对象,应根据上面定义的规则对结果数据帧进行过滤。
我最初的想法是:
if PersonXRole=='A':
return (people with role A)
else:
return (people with role B or C)
但我不确定这是否是一种有效的方法
您可以按X
可能的角色列表进行过滤,更容易传递1个或多个角色选项。
现在要根据人员的角色来验证要通过的过滤器,如果有两种情况,可以应用lambda函数。考虑下面的例子
person_role = 'A'
# Determine which list to filter by
fn_filter = lambda x: ['A'] if x == 'A' else ['B', 'C']
# Filter Friends roles of person_role
df[df.Role.isin(fn_filter(person_role))]
>>>
Friend Role
0 Alice A
1 Bob A
或者如果 person_role = 'C'
person_role = 'C'
df[df.Role.isin(fn_filter(person_role))]
>>>
Friend Role
2 Cooper B
3 Don C
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句