Streamlit写入DataFrame时如何设置保留两位小数?
问题:Streamlit中
st.write()展示DataFrame时保留两位小数的问题 现有Python代码:
import streamlit as st import pandas as pd data = {'Days': ["Sunday", "Wednesday", "Friday"], 'Predictions': [433.11, 97.9, 153.65]} df = pd.DataFrame(data) st.write(df)
使用st.write()展示DataFrame时,默认显示四位小数,输出如下:
Days | Predictions -------------|------------- 0 Sunday | 433.1100 | 1 Wednesday| 97.9000 | 2 Friday | 153.6500 |
尝试用df.round(2)处理但无效果,期望输出格式为:
Days | Predictions -------------|------------- 0 Sunday | 433.11 | 1 Wednesday| 97.90 | 2 Friday | 153.65 |
解决方案
方法1:设置Pandas全局显示格式
通过修改Pandas的显示配置,统一指定浮点数的小数位数:
import streamlit as st import pandas as pd # 全局设置浮点数显示两位小数 pd.options.display.float_format = '{:.2f}'.format data = {'Days': ["Sunday", "Wednesday", "Friday"], 'Predictions': [433.11, 97.9, 153.65]} df = pd.DataFrame(data) st.write(df)
该方法会影响所有Pandas数据的显示格式,适合全局统一要求的场景。
方法2:使用st.dataframe()指定列格式
Streamlit的st.dataframe()支持更精细化的列配置,可单独指定目标列的显示规则:
import streamlit as st import pandas as pd data = {'Days': ["Sunday", "Wednesday", "Friday"], 'Predictions': [433.11, 97.9, 153.65]} df = pd.DataFrame(data) # 定义列格式,指定Predictions列保留两位小数 column_config = { "Predictions": st.column_config.NumberColumn( "Predictions", format="%.2f" ) } st.dataframe(df, column_config=column_config)
此方法仅针对指定列生效,不会影响其他数据的显示逻辑,灵活性更高。
方法3:将数值列转为格式化字符串(仅适用于无需后续计算的场景)
如果不需要对该列进行数值运算,可直接将其转换为带两位小数的字符串:
import streamlit as st import pandas as pd data = {'Days': ["Sunday", "Wednesday", "Friday"], 'Predictions': [433.11, 97.9, 153.65]} df = pd.DataFrame(data) # 格式化Predictions列为两位小数的字符串 df['Predictions'] = df['Predictions'].apply(lambda x: "{:.2f}".format(x)) st.write(df)
注意:该操作会将数值类型转为字符串,若后续需对该列做计算,不建议使用。
内容的提问来源于stack exchange,提问作者Jamiu S.
相关产品推荐
相关产品推荐

