Pandas使用python内置的map()函数用字典值替换数值

0 人关注

我有一个像这样的字典 {'Note1':'Desc1','Note2':'Desc2','Note3':'Desc3'} 。 和一个数据帧,其值是这样的。

{0: 'Note1',
 1: 'Note1',
 2: 'Note1',
 3: 'Note2',
 4: 'Note2',
 5: 'Note2;Note3',
 6: 'Note2;Note3',
 7: 'Note3',

我想有一个新的列,其中描述被映射到音符编号,所以我这样做。

df['noteText'] = df['NoteRef'].map(notelist)

这很好用,只是双倍值会返回NaN。 所以我做了这个。

def swap(x):
    x = x.split(';')
    for y in x:
        y = map(notelist, y)
swap(df['NoteRef'].iloc[-2]) # just to test
df['noteText'] = df['NoteRef'].apply(swap)

但我真的不知道python中的map()在这里如何工作(不像在pandas中那样工作)。当我打印y时我得到一个map对象,当我打印list(y)时我得到TypeError: 'dict' object is not callable

所以我希望有人能给我指出正确的方向,因为这似乎是很容易的事情。如果有更好的方法,我将非常感谢你的学习。

2 个评论
在有多个值的情况下,预期的描述是什么?第一个注释的描述?最后一个?串联?
Description of both in order, like 'Desc2,Desc3'
python
pandas
dictionary
Bigboss01
Bigboss01
发布于 2021-09-21
1 个回答
Bigboss01
Bigboss01
发布于 2021-09-22
已采纳
0 人赞同

想通了这一点,多亏了 this post.

def swap(x):
    x = x.split(';')