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

Pandas按月份过滤列为日期时间类型的DataFrame

解决DataFrame日期列的筛选问题

嘿,我完全懂你的烦恼——网上大部分教程都盯着日期作为行索引的情况,但处理列是datetime类型的场景其实思路相通,只是把操作对象从行索引换成列名就好啦!下面给你一步步拆解解决方案:

第一步:确保列名是datetime类型

首先得确认你的列名真的是datetime格式,有时候可能是看起来像日期的字符串。如果还没转换,先做这一步:

import pandas as pd

# 把列名转换为datetime类型
df.columns = pd.to_datetime(df.columns)

第二步:筛选特定月份的列

假设你想保留1月和3月的列,直接利用datetime对象的month属性来过滤就行:

# 定义你要保留的月份列表
target_months = [1, 3]

# 筛选列:只保留月份在目标列表里的列
filtered_df = df.loc[:, df.columns.month.isin(target_months)]

进阶:筛选特定年份+月份的列

如果需要更精准的筛选(比如只保留2023年1月的列),可以组合year和month属性:

# 筛选2023年1月的列
filtered_df = df.loc[:, (df.columns.year == 2023) & (df.columns.month == 1)]

小提示:如果列名是字符串格式

如果你的列名还没转成datetime,也可以先转换再筛选,不用直接修改原DataFrame的列名:

# 先把列名转成datetime对象
datetime_columns = pd.to_datetime(df.columns)
# 筛选符合条件的列名
selected_columns = df.columns[datetime_columns.month.isin([1, 3])]
# 生成过滤后的DataFrame
filtered_df = df[selected_columns]

其实核心逻辑和处理日期索引是一样的,只是把df.index换成了df.columns——毕竟不管是行索引还是列名,只要是datetime类型,就可以用它的属性来做筛选~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:27:18