【发布时间】:2021-04-27 19:48:22
【问题描述】:
我有一个数据框,它有一个部门、它的功能、它的子功能和它的子子功能。数据框的示例如下:
d = [['Dept1' , 'HR' , 'Talent' , 'Good Employee 3'],
['Dept2' , 'IT' , 'Garbage' , 'Analysis HR 2'],
['Dept3' , 'IT' , 'Tech Sup' , 'IT Tech 2'],
[ 'Dept4' , 'HR' , 'Hardware' , 'Trash Can' ] ,
[ 'Dept5' , 'MKT' , 'Sales' , 'Facebook Promo 1'],
['Dept6' , 'MKT' , 'Communication', 'Car profit']]
df = pd.DataFrame(d, columns=['Department', 'Function' , 'Subfunction' , 'Sub-subfunction'])
Department Function Subfunction Sub-subfunction
0 Dept1 HR Talent Good Employee 3
1 Dept2 IT Garbage Analysis HR 2
2 Dept3 IT Tech Sup IT Tech 2
3 Dept4 HR Hardware Trash Can
4 Dept5 MKT Sales Facebook Promo 1
5 Dept6 MKT Communication Car profit
我需要创建一个规则来检查部门是否在功能中具有特定值,它只允许子功能中可能的值列表。然后,在子函数中,每个唯一值将只允许子函数中可能的值列表。
映射如下:
subfunction = {'HR': ['Talent', 'Analysis Human'],
'IT': ['Tech Sup', 'Hardware'],
'MKT': ['Sales', 'Communication']}
sub_subfunction = {'Talent': ['Good Employee 1', 'Good Employee 2', 'Good Employee 3'],
'Analysis Human': [ 'Analysis HR 1', 'Analysis HR 2', 'Analysis HR 3'],
'Tech Sup': ['IT Tech 1', 'IT Tech 2', 'IT Tech 3', 'Tech Master'],
'Hardware': ['PC pieces', 'Phone pieces'],
'Sales': ['Car profit', 'Bolt profit'],
'Communication': ['Facebook Promo 1', 'Instagram Promo 1']}
在这个数据帧中,这个函数会返回那些不遵守这个规则的,在这个例子中它会返回:
Department Function Subfunction Sub-subfunction
1 Dept2 IT Garbage Analysis HR 2
3 Dept4 HR Hardware Trash Can
4 Dept5 MKT Sales Facebook Promo 1
5 Dept6 MKT Communication Car profit
应用这些规则的最佳方式是什么? 如您所见,数据框的值可以在映射字典的值之外(尽管如果帮助太大,我可以将“函数”值全部映射到子函数字典中)。
如果它也有帮助,它可以分步实现。先用条件处理函数/子函数映射,然后分别处理子函数/子子函数的每个条件(虽然确实不太理想)
感谢您的支持!
【问题讨论】:
标签: python pandas if-statement filter conditional-statements