Python,Pandas:将数据帧中的单元格分配给组

2024-05-13 07:24:42 发布

您现在位置:Python中文网/ 问答频道 /正文

大家早上好

我希望这个标题在某种程度上符合我的问题!?我有一个看起来像这样的数据框:

数据帧(之前):

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

注意事项:

  • 每个职位都是独一无二的,永远不会出现在多个

Tags: 数据方法nameid标题列表group职位
2条回答

您可以创建一个映射字典,其中键是position,值是group名称,然后^{}将此字典映射到列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
id=[1,2,3]
name=['jane doe','john doe','john smith']
position=['position_1','position_2','position_3']
df=pd.DataFrame({'id':id,'name':name,'position':position,})
group_1 = ['position_3', 'position_18', 'position_45']
group_2 = ['position_2', 'position_9']
group_7 = ['position_1']
dct = {'group_1': group_1, 'group_2': group_2, 'group_7': group_7}
def lookup(itemParam):
     keys=[]
     for key,item in dct.items():
         if itemParam in item:
              keys.append(key)
     return keys
 mylist=[*map(lookup,df['position'])]
 mylist=[x[0] for x in mylist]
 df['group']=mylist
 print(df.head())

 output:
   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

相关问题 更多 >