如何在streamlit中使用python数据框样式

问题描述 投票:0回答:4

我使用以下代码设计了我的数据框:

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 上设置数据框的样式吗?

Image of the dataframe

有人可以帮助我吗?

python dataframe styling streamlit
4个回答
2
投票

您应该使用 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)

输出:

enter image description here

让我们将代码中“td_props”的值更改为“20”:

enter image description here

或者在代码的“th_props”中将标题的颜色更改为红色

#FF0000
,如下所示:

enter image description here

正如您所看到的,它改变了标题的颜色。有很多选项可以使用

st.table
修改数据框的样式。


0
投票

您需要将样式化的数据帧传递给 Streamlit。

st.dataframe(df2)

0
投票

用 html 传递样式(您称之为“df2”):

st.write(df2.to_html(), unsafe_allow_html=True))

0
投票

我遇到了同样的问题,经过一段时间的实验,我意识到 API 很混乱,并且这个用例仅适用于

st.table
(这是 完整示例

enter image description here

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)
© www.soinside.com 2019 - 2024. All rights reserved.