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



我有一本这样的字典{'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() 在这里如何工作(不像在熊猫中那样工作)。当我打印y时,我得到一个地图对象,当我打印list(y)时,我得到TypeError: 'dict' object is not callable

所以我希望有人能指出我正确的方向,因为这似乎很容易。如果有更好的方法可以做到这一点,我将不胜感激。 谢谢。

多亏了这篇文章才想通。

def swap(x):
x = x.split(';')
x = [*map(notelist.get, x)]
x = ",".join(x)
return x
df['noteText'] = df['NoteRef'].apply(swap)

最新更新