Я пытаюсь создать гиперссылки в наборе данных, который в конечном итоге экспортируется с помощью xlswriter, используя функцию, которую я создаю в своем скрипте Python. Однако полученный результат не соответствует ожидаемому.
=HYPERLINK() в Excel принимает два аргумента. Это целевой URL и якорный текст. Именно это я пытаюсь создать в Python с помощью XLSXWriter, чтобы при импорте Excel мог читать столбец как ссылку.
См. пример ниже.
#create exmaple df
df = pd.DataFrame({'urls': ['https://www.google.com', 'https://www.youtube.com', 'https://www.twitter.com','https://www.reddit.com']})
#create function
def make_hyperlink(x):
for urls in df['urls']:
return '=HYPERLINK(' + urls, "Site Link"
#apply function
df['hyperlink'] = df['urls'].apply(lambda x: make_hyperlink(x))
#view df
df
выход:
urls hyperlink
0 https://www.google.com (=HYPERLINK(https://www.google.com, Site Link)
1 https://www.youtube.com (=HYPERLINK(https://www.google.com, Site Link)
2 https://www.twitter.com (=HYPERLINK(https://www.google.com, Site Link)
3 https://www.reddit.com (=HYPERLINK(https://www.google.com, Site Link)
Я ожидаю, что вывод будет отображать каждый из отдельных URL-адресов с «Ссылкой на сайт» в качестве текста привязки, поэтому я не уверен, почему функция применяется только к первому URL-адресу, но четыре раза.
Руководство приветствуется.






Есть несколько проблем в вашей функции make_hyperlink() и в том, как вы ее применяете. Вот исправленная версия:
import pandas as pd
#create exmaple df
df = pd.DataFrame({'urls': ['https://www.google.com', 'https://www.youtube.com',
'https://www.twitter.com','https://www.reddit.com']})
#create function
def make_hyperlink(url):
return '=HYPERLINK("%s", "Site Link")' % url
#apply function
df['hyperlink'] = df['urls'].apply(make_hyperlink)
#view df
print(df)
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas.xlsx', engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')
# Close the Pandas Excel writer and output the Excel file.
writer.save()
Выход: