Select 使用 python 和 streamlit 的对象类型字段的年份
Select year from object type field using python and streamlit
我有一个包含“生日”列的数据框,但它的类型 object 像这样 1984-11-15
格式 y%-%M-%d。
我想将其转换为日期并仅提取 无重复 的年份,以便根据年份过滤数据框。
我正在使用多选选项以允许用户选择多个选项来过滤数据框,但是当我尝试转换列类型时系统崩溃并显示以下错误。
StreamlitAPIException:选项中必须存在每个多选默认值
回溯:
File "f:\AIenv\streamlit\TEC_APPS\fit_in_out_leb.py", line 762, in <module>
main()File "f:\AIenv\streamlit\TEC_APPS\fit_in_out_leb.py", line 366, in main
db_stb = st.sidebar.multiselect("Select date of birth ",list(query_bd),default = query_bd)
此错误是什么意思以及如何解决?
代码:
df['birthdate'] = pd.to_datetime(df['birthdate'])
query_bd = df.birthdate.unique()
db_stb = st.sidebar.multiselect("Select date of birth ",list(query_bd),default = query_bd)
为年份创建一个新列,此列用于生成唯一选项和select基于年份的框架。
import streamlit as st
import pandas as pd
d = {
'birthdate': ['2022-01-01', '2021-01-01', '2020-01-01', '2019-01-01', '2019-02-05']
}
df = pd.DataFrame(d)
df['birthdate'] = pd.to_datetime(df['birthdate'])
df['year'] = df['birthdate'].dt.year
query_bd = df.year.unique()
db_stb = st.sidebar.multiselect("Select date of birth ", query_bd, default=query_bd)
selected = df.loc[df['year'].isin(db_stb)]
st.write(selected['birthdate'].dt.date)
输出
我有一个包含“生日”列的数据框,但它的类型 object 像这样 1984-11-15
格式 y%-%M-%d。
我想将其转换为日期并仅提取 无重复 的年份,以便根据年份过滤数据框。
我正在使用多选选项以允许用户选择多个选项来过滤数据框,但是当我尝试转换列类型时系统崩溃并显示以下错误。
StreamlitAPIException:选项中必须存在每个多选默认值
回溯:
File "f:\AIenv\streamlit\TEC_APPS\fit_in_out_leb.py", line 762, in <module>
main()File "f:\AIenv\streamlit\TEC_APPS\fit_in_out_leb.py", line 366, in main
db_stb = st.sidebar.multiselect("Select date of birth ",list(query_bd),default = query_bd)
此错误是什么意思以及如何解决?
代码:
df['birthdate'] = pd.to_datetime(df['birthdate'])
query_bd = df.birthdate.unique()
db_stb = st.sidebar.multiselect("Select date of birth ",list(query_bd),default = query_bd)
为年份创建一个新列,此列用于生成唯一选项和select基于年份的框架。
import streamlit as st
import pandas as pd
d = {
'birthdate': ['2022-01-01', '2021-01-01', '2020-01-01', '2019-01-01', '2019-02-05']
}
df = pd.DataFrame(d)
df['birthdate'] = pd.to_datetime(df['birthdate'])
df['year'] = df['birthdate'].dt.year
query_bd = df.year.unique()
db_stb = st.sidebar.multiselect("Select date of birth ", query_bd, default=query_bd)
selected = df.loc[df['year'].isin(db_stb)]
st.write(selected['birthdate'].dt.date)