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

将pandas中的两列映射到第三列

  •  0
  • Hrvoje  · 技术社区  · 6 年前

    我想创建熊猫专栏 'Link' 基于其他2列( URL Title )为了创建将在表单中保存标题为的HTML链接标记的列:

    <a href="{}">{}</a>'.format(df['Ad_URL'],df['Title'])

    我用的是:

    def Ad_Link(df):
        return ('<a href="{}">{}</a>'.format(df['Ad_URL'],df['Title']))
    
    df['Link'] = df[['Ad_URL','Title']].apply(lambda x:Ad_Link(x), axis=1)
    

    但它并不像预期的那样工作。

    它给出: <a href="List of all URLs">List of all Titles</a> 对于df中的所有项[“Link”]

    它假设迭代并给出:

    <a href="URL[0]">Title[0]</a> 
    <a href="URL[1]">Title[1]</a> 
    

    编辑

    实际上,我的解决方案起作用了,最初数据帧有问题。

    0 回复  |  直到 6 年前
        1
  •  1
  •   jezrael    6 年前

    首先你的代码很好的为我工作。但添加了多个输出相同的解决方案:

    df = pd.DataFrame({'Ad_URL':['u1', 'u2', 'u3'], 'Title':['t1', 't2', 't3']})
    
    
    def Ad_Link(df):
        return ('<a href="{}">{}</a>'.format(df['Ad_URL'],df['Title']))
    
    df['Link'] = df[['Ad_URL','Title']].apply(lambda x:Ad_Link(x), axis=1)
    
    #change variable in function to x
    def Ad_Link1(x):
        return ('<a href="{}">{}</a>'.format(x['Ad_URL'],x['Title']))
    
    df['Link1'] = df[['Ad_URL','Title']].apply(lambda x:Ad_Link1(x), axis=1)
    
    #removed lambda function
    def Ad_Link2(x):
        return ('<a href="{}">{}</a>'.format(x['Ad_URL'],x['Title']))
    
    df['Link2'] = df.apply(Ad_Link2, axis=1)
    
    #pass columns names to lambda function, changed function
    def Ad_Link3(url, link):
        return ('<a href="{}">{}</a>'.format(url, link))
    
    df['Link3'] = df.apply(lambda x: Ad_Link3(x['Ad_URL'],x['Title']), axis=1)
    
    #only lambda function solution
    df['Link4'] = df.apply(lambda x: '<a href="{}">{}</a>'.format(x['Ad_URL'], x['Title']), axis=1)
    

    print (df)
      Ad_URL Title                 Link                Link1                Link2  \
    0     u1    t1  <a href="u1">t1</a>  <a href="u1">t1</a>  <a href="u1">t1</a>   
    1     u2    t2  <a href="u2">t2</a>  <a href="u2">t2</a>  <a href="u2">t2</a>   
    2     u3    t3  <a href="u3">t3</a>  <a href="u3">t3</a>  <a href="u3">t3</a>   
    
                     Link3                Link4  
    0  <a href="u1">t1</a>  <a href="u1">t1</a>  
    1  <a href="u2">t2</a>  <a href="u2">t2</a>  
    2  <a href="u3">t3</a>  <a href="u3">t3</a>  
    
        2
  •  1
  •   Mohit Musaddi    6 年前

    这对我很有用。

    df = pd.DataFrame({'Ad_URL':['u1', 'u2', 'u3'], 'Title':['t1', 't2', 't3']})
    
    def Ad_Link(df):
        return ('<a href="{}">{}</a>'.format(df['Ad_URL'],df['Title']))
    
    df['Link'] = df[['Ad_URL','Title']].apply(lambda x:Ad_Link(x), axis=1)
    
    print(df)
    

    输出:

      Ad_URL Title                 Link
    0     u1    t1  <a href="u1">t1</a>
    1     u2    t2  <a href="u2">t2</a>
    2     u3    t3  <a href="u3">t3</a>