代码之家  ›  专栏  ›  技术社区  ›  sato

.map和defaultdict的用法

  •  1
  • sato  · 技术社区  · 6 年前

    我有一个pandas数据框,我必须根据现有列的值填充一个新列,并将字典的值关联起来。

    mydict={'key1':'val1', 'key2':'val2'}
    df['new_col']=df['keys'].map(mydict)
    

    现在我有一个类似的问题,但是字典现在是 defaultdict(list)

    my_defdict=defaultdict(list)
    my_defdict={'key1':['val1','item1'], 'key2':['val2','item2']}
    

    我需要一个包含列表第二个元素的新列,比如

    df['new_col2']=df['keys'].map(my_defdict()[1])
    

    这当然是错的。如何在不创建另一个普通字典的情况下执行此操作?

    1 回复  |  直到 6 年前
        1
  •  1
  •   cs95 abhishek58g    6 年前

    假设所有值在每个列表中至少有两个项,则添加 str[1] 最后:

    df['new_col2'] = df['keys'].map(my_defdict).str[1]
    

    或者,

    df['new_col2'] = df['keys'].map(my_defdict).str.get(1)