使用 Streamlit 和 Pandas 制作带有可点击链接的数据表格

使用 Streamlit 和 Pandas 制作带有可点击链接的数据表格

欢迎来到 Streamlit 的世界!今天,我们将一起探索如何利用 Streamlit 和 Pandas 在 Python 中创建一个带有可点击链接的数据表格。Streamlit 是一个神奇的工具,它让数据科学家和开发人员能够轻松快捷地构建数据应用,而 Pandas 则是处理和分析数据的强大工具。结合它们的力量,我们可以制作出既美观又实用的数据表格。

快速启动

在开始之前,您需要确保已经安装了 Streamlit 和 Pandas。如果还没有安装,可以通过以下命令轻松安装:

复制代码
pip install streamlit pandas

一旦安装完成,我们就可以开始动手编写代码了。

代码详解

我们的目标是创建一个简单的数据表格,其中包含可点击的链接。下面是完整的代码及其逐行解释:

javascript 复制代码
import streamlit as st
import pandas as pd

我们从导入 Streamlit 和 Pandas 开始。这两个库是我们构建应用的基础。

python 复制代码
def make_clickable(url):
    return f'<a target="_blank" href="{url}">💠</a>'

这里,我们定义了一个名为 make_clickable 的函数,它将普通的 URL 转换为 HTML 链接格式。这些链接在新标签页中打开,展示了一个小图标(💠)。

css 复制代码
data = {
    'url': ['https://www.amazon.com/' for _ in range(10)]
}

我们创建了一个包含 10 个重复 Amazon 链接的字典。这只是一个示例,您可以根据需要替换成任何链接。

ini 复制代码
df = pd.DataFrame(data)

接着,我们使用 Pandas 将这个字典转换成一个 DataFrame。DataFrame 是一个非常适合于数据展示和操作的表格式数据结构。

scss 复制代码
df['url'] = df['url'].apply(make_clickable)

我们利用 apply 函数将每个 URL 转换为 HTML 链接。这是通过之前定义的 make_clickable 函数实现的。

ini 复制代码
df = df.to_html(escape=False)

然后,我们将 DataFrame 转换成 HTML。这里的 escape=False 参数是为了确保 URL 被正确地解析为 HTML。

ini 复制代码
st.write(df, unsafe_allow_html=True)

完整代码

python 复制代码
import streamlit as st
import pandas as pd

def make_clickable(url):
    return f'<a target="_blank" href="{url}">💠</a>'

data = {
    'url':['https://www.amazon.com/' for i in range(10)]
}

df = pd.DataFrame(data)
df['url'] = df['url'].apply(make_clickable)
df = df.to_html(escape=False)
st.write(df, unsafe_allow_html=True)

最后,我们使用 Streamlit 的 st.write 函数来在应用中展示这个 HTML 表格。unsafe_allow_html=True 参数允许我们在 Streamlit 应用中渲染 HTML 内容。

展示成果

运行此代码,您将看到一个 Streamlit 应用,其中展示了一个带有 10 个可点击 Amazon 链接的表格。这是一个非常简单的示例,但它展示了 Streamlit 和 Pandas 强大的结合能力。

拓展应用

这个例子只是 Streamlit 和 Pandas 功能的一个小窗口。您可以根据需求添加更多的列、过滤器、图表等,使您的应用更加丰富和动态。

相关推荐
子兮曰18 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰19 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
默_笙19 小时前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
爱勇宝19 小时前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
qq_4260039619 小时前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫19 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
胡写代码19 小时前
别再前后端各写一套表单校验了
java·后端
长沙三为智能科技19 小时前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读20 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
大勇前进20 小时前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端