You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Streamlit按月份筛选DataFrame中YYYY-MM-DD格式日期列?

按加泰罗尼亚语月份筛选DataFrame日期行的解决方法

核心问题分析

你之前失败的原因主要有两个:

  1. 原始Data de la classe列是字符串格式,无法直接提取月份;
  2. 没有建立加泰罗尼亚语月份与数字月份的对应映射,导致筛选逻辑不匹配。

分步解决代码

1. 转换日期列类型

首先必须把字符串格式的日期转换成datetime类型,这样才能用dt.month提取月份:

import pandas as pd
import streamlit as st

# 读取CSV数据
df = pd.read_csv('你的文件路径.csv')
# 转换日期列,errors='coerce'可将无效日期转为NaT避免报错
df['Data de la classe'] = pd.to_datetime(df['Data de la classe'], errors='coerce')

2. 定义加泰罗尼亚语月份映射

创建字典对应加泰罗尼亚语月份和数字月份:

cat_month_map = {
    'Gener': 1,
    'Febrer': 2,
    'Març': 3,
    'Abril': 4,
    'Maig': 5,
    'Juny': 6,
    'Juliol': 7,
    'Agost': 8,
    'Setembre': 9,
    'Octubre': 10,
    'Novembre': 11,
    'Desembre': 12
}

3. 侧边栏选择器与筛选逻辑

用Streamlit侧边栏创建选择框,再根据选择的月份筛选数据:

# 侧边栏选择月份
selected_cat_month = st.sidebar.selectbox('Selecciona el mes', list(cat_month_map.keys()))

# 获取对应数字月份
target_month = cat_month_map[selected_cat_month]

# 筛选数据(两种方法二选一)
# 方法一:布尔索引(更直观)
filtered_df = df[df['Data de la classe'].dt.month == target_month]

# 方法二:df.query(如果你偏好这种写法)
# filtered_df = df.query("`Data de la classe`.dt.month == @target_month")

# 显示结果
st.dataframe(filtered_df)

完整示例代码

把所有步骤整合起来的完整可运行代码:

import streamlit as st
import pandas as pd

# 读取CSV(替换成你的文件路径)
df = pd.read_csv('classes.csv')

# 转换日期列
df['Data de la classe'] = pd.to_datetime(df['Data de la classe'], errors='coerce')

# 加泰罗尼亚语月份映射
cat_month_map = {
    'Gener': 1,
    'Febrer': 2,
    'Març': 3,
    'Abril': 4,
    'Maig': 5,
    'Juny': 6,
    'Juliol': 7,
    'Agost': 8,
    'Setembre': 9,
    'Octubre': 10,
    'Novembre': 11,
    'Desembre': 12
}

# 侧边栏选择器
selected_month = st.sidebar.selectbox('Selecciona el mes', list(cat_month_map.keys()))

# 筛选并显示
target_month = cat_month_map[selected_month]
filtered_df = df[df['Data de la classe'].dt.month == target_month]
st.dataframe(filtered_df)

内容的提问来源于stack exchange,提问作者Adrià Martínez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:30:41