You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Streamlit中DataFrame可点击链接修复及可排序表格实现

解决Streamlit中DataFrame链接跳转与表格排序问题

一、修复链接跳转错误

原代码的链接生成逻辑存在核心错误:拼接URL时误用了整个df['Symbol']列,导致生成的地址包含所有股票代码,无法定位到单个股票的图表页面。

修正后的链接生成逻辑:使用apply传入的当前行Symbol值(而非整列)拼接目标URL:

def make_clickable(symbol):
    # 若Symbol列包含逗号,取逗号前部分作为显示文本;无逗号则直接用原符号
    display_text = symbol.split(',')[0] if ',' in symbol else symbol
    target_url = f"https://nepsealpha.com/trading/chart?symbol={symbol}"
    return f"<a target='_blank' href='{target_url}'>{display_text}</a>"

二、实现表格可排序

df.to_html生成的是静态HTML表格,原生不支持排序功能。Streamlit内置的st.dataframe组件自带排序、筛选、分页等交互能力,且能直接配置链接列,是更优的解决方案:

最终完整代码

import pandas as pd
import streamlit as st

df = pd.read_csv('data_file.csv')

# 用st.dataframe的column_config直接定义链接列,同时保留表格排序功能
st.dataframe(
    df,
    column_config={
        "Symbol": st.column_config.LinkColumn(
            "股票代码",
            help="点击查看对应股票图表",
            # 自定义显示文本(如果需要拆分逗号内容)
            display_text=lambda x: x.split(',')[0] if ',' in x else x,
            # 生成目标URL
            url=lambda x: f"https://nepsealpha.com/trading/chart?symbol={x}"
        )
    },
    hide_index=True,
    use_container_width=True
)

关键说明

  • 用st.dataframe替代to_html渲染,无需手动处理HTML,原生支持排序交互
  • 链接生成时严格基于当前行的Symbol值,确保跳转地址准确

内容的提问来源于stack exchange,提问作者dbmtbm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:45:19