如何用applymap()实现DataFrame可点击链接并适配Streamlit?
问题:使用applymap()实现DataFrame单元格可点击链接(Streamlit环境)
我想用applymap()函数实现DataFrame单元格值为可点击链接,目前通过.format方法已实现该功能,但更倾向于使用applymap()。
现有实现代码如下:
data = [dict(name='Google', url='http://www.google.com'), dict(name='Stackoverflow', url='http://stackoverflow.com')] df = pd.DataFrame(data) df['nameurl'] = df['name'] + '#' + df['url'] def make_clickable_both(val): name, url = val.split('#') return f'<a target="_blank" href="{url}">{name}</a>' df.style.format({'nameurl': make_clickable_both})
这段代码可生成预期的可点击链接,但使用applymap()调用相同函数时,却未返回预期的HTML代码和可点击链接:
df.style.applymap(make_clickable_both, subset=['nameurl'])
补充说明:由于需在Streamlit中实现该功能,因此不想使用.format方法。尝试了三种方式(其中第三种为@Henry Ecker的建议),第三种在Jupyter Notebook中有效,但所有方式在Streamlit中均无法生成可点击的单元格值:
# 1 st.dataframe(df.style.applymap(make_clickable_both, subset=['nameurl'])) # 2 st.dataframe(df.style.format({'nameurl': make_clickable_both})) # 3 df['nameurl'] = df['nameurl'].apply(make_clickable_both) st.dataframe(df.style)
内容的提问来源于stack exchange,提问作者user9532692
相关产品推荐
相关产品推荐

