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

如何基于日期时间索引按月份筛选并操作时序数据?

当然可以用if语句实现这个需求!

首先得先确认你的DataFrame索引是正确的datetime类型,因为你的日期格式是dd/mm/yyyy,如果直接用字符串索引的话,月份判断会出问题。先做这一步转换:

import pandas as pd

# 把字符串索引转成datetime类型,指定格式避免解析错误
df.index = pd.to_datetime(df.index, format='%d/%m/%Y')

接下来分两种方式实现,都用到了if逻辑:

方式1:显式循环+if语句(适合小数据集)

如果你想直接用if语句写逻辑,可以遍历每一行的索引,判断月份是否为10(十月),然后给对应行添加标记:

# 先新增一列用来存放标记,初始为空字符串
df['october_flag'] = ''

# 遍历每一行
for idx, _ in df.iterrows():
    # 判断当前索引的月份是否是十月
    if idx.month == 10:
        df.loc[idx, 'october_flag'] = 'x'

不过这种循环在数据集很大的时候效率会比较低,更推荐下面的向量化方式。

方式2:向量化操作+隐式if逻辑(推荐)

Pandas最擅长的就是向量化操作,不用写显式循环,用lambda或者np.where就能把if逻辑融入进去,效率高很多:

用lambda+apply

df['october_flag'] = df.index.month.apply(lambda month: 'x' if month == 10 else '')

用numpy.where(更高效)

import numpy as np
df['october_flag'] = np.where(df.index.month == 10, 'x', '')

至于你之前用while语句没成功,大概率是因为while循环在遍历时序索引时逻辑没处理好(比如没正确迭代日期、没准确判断月份),而if语句不管是在循环里还是结合向量化操作,都能更清晰地实现你的需求。

内容的提问来源于stack exchange,提问作者spcol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:32:53