Python,Pandas:将数据框中的单元格分配给组
各位早上好!
我希望标题在某种程度上适合我的问题!?我有一个看起来像这样的数据框:
数据框(之前):
id | name | position
1 | jane doe | position_1
2 | john doe | position_2
3 | john smith | position_3
另外我有多个组列表:
group_1 = ['position_3', 'position_18', 'position_45']
group_2 = ['position_2', 'position_9']
group_7 = ['position_1']
现在我想知道使用分配的组在我的数据框中实现另一列的最佳方法是什么?例如:
数据框(之后):
id | name | position | group
1 | jane doe | position_1 | group_7
2 | john doe | position_2 | group_2
3 | john smith | position_3 | group_1
笔记:
- 每个位置都是独一无二的,永远不会出现在多个组中!
回答
您可以创建一个映射字典,其中键是名称,position值是group名称,然后map将此字典放在列上position:
dct = {'group_1': group_1, 'group_2': group_2, 'group_7': group_7}
mapping_dct = {pos:grp for grp, positions in dct.items() for pos in positions}
df['group'] = df['position'].map(mapping_dct)
>>> df
id name position group
0 1 jane doe position_1 group_7
1 2 john doe position_2 group_2
2 3 john smith position_3 group_1