Отображение 2 столбцов в пандах на третий - PullRequest
2 голосов
/ 19 марта 2019

Я хочу создать столбец панд 'Link' на основе двух других столбцов (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> 

EDIT

На самом деле мое решение сработало, изначально была проблема с фреймом данных.

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Сначала твой код работает для меня приятно. Но добавили несколько решений с одинаковым выходом:

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>  
1 голос
/ 19 марта 2019

Это прекрасно работает для меня.

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...