【问题标题】:Mapping 2 columns in pandas to third one将 pandas 中的 2 列映射到第三列
【发布时间】:2019-03-19 05:12:49
【问题描述】:

我想基于其他 2 列(URLTitle)创建 pandas 列 'Link',以便创建包含 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)

但它没有按预期工作。

它给出: &lt;a href="List of all URLs"&gt;List of all Titles&lt;/a&gt; 用于 df['Link'] 中的所有项目

假设迭代并给出:

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

编辑

实际上我的解决方案有效,最初的数据框有问题。

【问题讨论】:

  • 你的代码适合我
  • 您遇到错误了吗?
  • 用预期输出和实际输出更新您的问题
  • 您能否解释一下它是如何不按预期工作的。给你????
  • 你能把参数名df改成函数Add_Link别的名字吗?

标签: python python-3.x pandas lambda


【解决方案1】:

首先你的代码对我很有效。但是添加了多个具有相同输出的解决方案:

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>  

【讨论】:

  • 在#removed lambda 函数下应该是 df['Link2'] = df.apply(Ad_Link1, axis=1) 中的 Ad_Link2?
  • @Harvey - 哎呀,错字,应该有df['Link2'] = df.apply(Ad_Link2, axis=1)
【解决方案2】:

这对我来说很好。

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>

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 2021-08-31
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 2021-08-21
    • 2016-06-08
    • 2016-09-02
    • 2021-04-18
    相关资源
    最近更新 更多