【发布时间】:2021-09-21 15:18:03
【问题描述】:
我有一本这样的字典{'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 时,我得到一个地图对象,当我打印list(y) 时,我得到TypeError: 'dict' object is not callable。
所以我希望有人能指出我正确的方向,因为这似乎很容易。如果有更好的方法来做到这一点,我将不胜感激学习它。 谢谢。
【问题讨论】:
-
如果有多个值,预期的描述是什么?第一个注释的描述?最后一个?串联?
-
按顺序描述两者,如 'Desc2,Desc3'
标签: python pandas dictionary