【问题标题】:How to search column elements and corresponding mappings in Python Pandas? [duplicate]如何在 Python Pandas 中搜索列元素和对应的映射? [复制]
【发布时间】:2020-12-12 13:45:50
【问题描述】:

我有一个数据框 df1,如下所示,其中包含标签列表。

                       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 中的标签相对应的“名称”列,以找到相应的“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

我需要帮助才能实现这一目标。提前谢谢!

注意:

我尝试的是

    df_iab[df_iab['name'].isin(df['image_CONTAINS_OBJECT'])]

但这只会将 df2 减少到与“标签”匹配的“iab”,但不会真正执行搜索和映射找到的值。

【问题讨论】:

    标签: python pandas dataframe search mapping


    【解决方案1】:

    合并:

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

    【讨论】:

      【解决方案2】:

      另一种方法是使用.mapiab 的详细信息从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)
      

      【讨论】:

      • 谢谢!!效果很好!
      猜你喜欢
      • 2015-05-20
      • 2017-09-25
      • 2015-11-16
      • 2016-02-20
      • 1970-01-01
      • 2021-03-07
      • 2014-09-10
      • 2015-11-17
      • 1970-01-01
      相关资源
      最近更新 更多