Как преобразовать индекс pandas данных в виде кликабельной ссылки? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть pandas кадр данных, который выглядит следующим образом:

        heading1  heading2
 issue1 data        data
 issue2 data        data

введите описание изображения здесь

И я преобразовываю это в Excel, используя df.to_excel функция. Теперь я хочу преобразовать индекс в кликабельные гиперссылки. Например - если я нажму Issue1, это должно привести меня к www.issue1.com. Я знаю, как преобразовать столбец pandas dataframe в гиперссылку, но не уверен, смогу ли я сделать индексы кликабельными. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 23 марта 2020

Используйте pandas.DataFrame.set_index вместе с pandas.DataFrame.index.

import pandas as pd

df = pd.DataFrame(
    dict(
        MUL1=["Data", "Data"],
        MUL2=["Data", "Data"],
    ),
    index=["Issue1", "Issue2"],
)

df = df.set_index("www." + df.index + ".com")
print(df)

редактировать: OP прокомментировал:

Это просто меняет индекс с 'Issue1' на 'www.issue1.com но не делает его кликабельным. (= HYPERLINK) - Aditya Garg

Мой ответ таков: кликабельность ссылки зависит от того, в какой программе вы отображаете ссылку. Я использую Pycharm, который способен обнаруживать URL-адреса в выводе консоли и по умолчанию делает их кликабельными: enter image description here

При этом он может быть недоступен для клика при запуске скрипта в других программах, например, cmd.exe. Превращение в html или стиль уценки не изменит это для таких вещей, как cmd. Однако, если вы собираетесь отображать этот DataFrame в чем-то, что поддерживает определенный метод форматирования ссылок, то вы можете попробовать некоторые из следующих примеров:

import pandas as pd

df = pd.DataFrame(
    dict(
        MUL1=["Data", "Data"],
        MUL2=["Data", "Data"],
    ),
    index=["Issue1", "Issue2"],

)
index = df.index

# Basic link example
df = df.set_index('www.' + index + '.com/')
print(df)

# Markdown Link Example
df = df.set_index("[" + index + "](www." + index + ".com)")
print(df)

# angle bracket format example
df = df.set_index("<www." + index + ".com>")
print(df)

# html link example
df = df.set_index('<a href="www.' + index + '.com">' + index + '</a>')
print(df)

...