使用 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 功能的一个小窗口。您可以根据需求添加更多的列、过滤器、图表等,使您的应用更加丰富和动态。

相关推荐
焗猪扒饭2 小时前
redis stream用作消息队列极速入门
redis·后端·go
树獭非懒3 小时前
AI大模型小白手册|Embedding 与向量数据库
后端·python·llm
IT_陈寒5 小时前
SpringBoot实战:5个让你的API性能翻倍的隐藏技巧
前端·人工智能·后端
梦想很大很大6 小时前
拒绝“盲猜式”调优:在 Go Gin 项目中落地 OpenTelemetry 链路追踪
运维·后端·go
唐叔在学习6 小时前
就算没有服务器,我照样能够同步数据
后端·python·程序员
用户68545375977697 小时前
同步成本换并行度:多线程、协程、分片、MapReduce 怎么选才不踩坑
后端
javaTodo7 小时前
Claude Code 记忆机制详解:从 CLAUDE.md 到 Auto Memory,六层体系全拆解
后端
LSTM977 小时前
使用 C# 和 Spire.PDF 从 HTML 模板生成 PDF 的实用指南
后端
JaguarJack8 小时前
为什么 PHP 闭包要加 static?
后端·php·服务端