我使用以下代码设计了我的数据框:
th_props = [
('font-size', '14px'),
('text-align', 'center'),
('font-weight', 'bold'),
('color', '#6d6d6d'),
('background-color', '#f7ffff')
]
td_props = [
('font-size', '12px')
]
styles = [
dict(selector="th", props=th_props),
dict(selector="td", props=td_props)
]
df2=outputdframe.style.set_properties(**{'text-align': 'left'}).set_table_styles(styles)
但它不适用于streamlit。 那么,知道如何在 Streamlit 上设置数据框的样式吗?
有人可以帮助我吗?
您应该使用 st.table 而不是 st.dataframe。这是一些可重现的代码:
# import packages
import streamlit as st
import pandas as pd
import numpy as np
# Example dataframe
outputdframe = pd.DataFrame(np.array([["CS", "University", "KR", 7032], ["IE", "Bangalore", "Bengaluru", 7861], ["CS", "Bangalore", "Bengaluru", 11036]]), columns=['Branch', 'College', 'Location', 'Cutoff'])
# style
th_props = [
('font-size', '14px'),
('text-align', 'center'),
('font-weight', 'bold'),
('color', '#6d6d6d'),
('background-color', '#f7ffff')
]
td_props = [
('font-size', '12px')
]
styles = [
dict(selector="th", props=th_props),
dict(selector="td", props=td_props)
]
# table
df2=outputdframe.style.set_properties(**{'text-align': 'left'}).set_table_styles(styles)
st.table(df2)
输出:
让我们将代码中“td_props”的值更改为“20”:
或者在代码的“th_props”中将标题的颜色更改为红色
#FF0000
,如下所示:
正如您所看到的,它改变了标题的颜色。有很多选项可以使用
st.table
修改数据框的样式。
您需要将样式化的数据帧传递给 Streamlit。
st.dataframe(df2)
用 html 传递样式(您称之为“df2”):
st.write(df2.to_html(), unsafe_allow_html=True))
我遇到了同样的问题,经过一段时间的实验,我意识到 API 很混乱,并且这个用例仅适用于
st.table
(这是 完整示例)
import streamlit as st
import pandas as pd
# Create a sample dataframe
data = {
'Column 1': [1, 2, 3, 4],
'Column 2': [5, 6, 7, 8],
'Column 3': [9, 10, 11, 12]
}
df = pd.DataFrame(data)
# Style the dataframe
def style_dataframe(df):
return df.style.set_properties(**{'text-align': 'left'})
# Table styles
table_styles = [
{'selector': 'th', 'props': [('font-size', '14px'), ('text-align', 'center'), ('font-weight', 'bold'), ('color', '#6d6d6d'), ('background-color', '#f7ffff')]},
{'selector': 'td', 'props': [('font-size', '12px')]},
]
styled_df = style_dataframe(df).set_table_styles(table_styles)
st.markdown('### Using `st.table`')
st.table(styled_df)
st.markdown('### Using `st.dataframe`')
st.dataframe(styled_df)
st.markdown('### Using `st.write`')
st.write(styled_df)