如何在Pandas中按年、月、季度等日期条件筛选列?
Pandas按日期维度筛选列(年/月/季度/固定日)
你的数据框列名是datetime类型,要按年、月、季度或固定日期筛选列,以下是针对不同需求的实现方法:
1. 筛选每年的同一天(如9月14日)
利用列名的dt.month和dt.day属性匹配目标日期:
# 筛选所有9月14日的列 filtered_df = df.loc[:, (df.columns.month == 9) & (df.columns.day == 14)] print(filtered_df)
运行后会保留2022-09-14、2021-09-14、2020-09-14、2019-09-14这些列。
2. 按月份筛选(如所有9月的列)
直接匹配dt.month属性:
# 筛选所有9月的列 sep_df = df.loc[:, df.columns.month == 9] print(sep_df)
3. 按季度筛选(如第三季度)
Pandas的datetime类型支持dt.quarter属性(1-4对应四个季度):
# 筛选第三季度(7-9月)的列 q3_df = df.loc[:, df.columns.quarter == 3] print(q3_df)
你的示例中第三季度的列包括2022-09-14、2022-08-14、2022-07-14、2021-09-14、2020-09-14、2019-09-14。
4. 按年份筛选(如2022年的列)
匹配dt.year属性:
# 筛选2022年的列 year2022_df = df.loc[:, df.columns.year == 2022] print(year2022_df)
补充说明
- 若列名是字符串类型,需先转换为
datetime:df.columns = pd.to_datetime(df.columns) - 多条件组合时,用
&(且)、|(或)连接,注意添加括号避免优先级问题
内容的提问来源于stack exchange,提问作者Green Finance
相关产品推荐
相关产品推荐

