如何在Python中搜索列元素和对应的映射?

如何在Python中搜索列元素和对应的映射?,python,pandas,dataframe,search,mapping,Python,Pandas,Dataframe,Search,Mapping,我有一个dataframedf1,比如下面的一个标签列表 tags 0 label 0 document 0 text 0 paper 0 poster ...

我有一个dataframedf1,比如下面的一个标签列表

                       tags
            0            label
            0         document
            0             text
            0            paper
            0           poster
                     ...    
            21600         wood
            21600      hot tub
            21600          tub
            21600      terrace
            21600      blossom
还有另一个数据帧df2,它映射到df中存在的标记,并映射到列名“name”

                name        iab
        0   abies       Nature and Wildlife 
        1   absinthe    Food & Drink    
        2   abyssinian  Pets    
        3   accessories Style & Fashion 
        4   accessory   Style & Fashion 
          ...   ... ... ... ...

        1595 rows × 4 columns
本质上,其思想是搜索df2中与df1中的标记相对应的列“name”,以找到相应的“iab”映射,并输出一个包含两列的CSV—标记及其对应的“iab”映射

输出如下所示:

                        tags      iab
            0            label    <corresponding iab mapping 
                                   to 'name' found in df2>
            0         document
            0             text
            0            paper
            0           poster
                     ...    
            21600         wood
            21600      hot tub
            21600          tub
            21600      terrace
            21600      blossom
但这只会将df2减少到与“标记”匹配的“iab”,而不会真正执行搜索并映射找到的值。

合并:

new_df = df1.merge(df2, how='left', left_on='tags', right_on='name')

另一种方法是使用
.map
iab
详细信息从
df2
传输到
df1

df1['iab']=df1.tags.map(dict(zip(df2.name,df2.iab)))
它的工作原理

#come up with a dictionary of name and `iab` in `df2`.

d=dict(zip(df2.name,df2.iab))

# Map the dict to df1 using the tag column

df1.tags.map(d)

非常感谢。结果很好!
#come up with a dictionary of name and `iab` in `df2`.

d=dict(zip(df2.name,df2.iab))

# Map the dict to df1 using the tag column

df1.tags.map(d)