【问题标题】:Pandas replace values with dictionary values using python built in map() functionPandas 使用 python 内置的 map() 函数将值替换为字典值
【发布时间】: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


【解决方案1】:

感谢this 发帖。

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

【讨论】:

    猜你喜欢
    • 2020-01-12
    • 2021-09-22
    • 1970-01-01
    • 2013-11-15
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多