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

Python Pandas使用findall()筛选月度数据时仅返回单列如何解决?

解决方案

你当前单独提取date列执行匹配逻辑,所以返回结果仅包含单列数据。要保留全列数据,需要基于匹配结果生成布尔索引,对完整DataFrame做切片过滤即可,以下是几种实现方案:

方案1:兼容原有逻辑调整

在你原有findall逻辑的基础上生成布尔掩码,再对全表做筛选:

search = '2021-07'
# 生成布尔掩码:匹配到目标月份的行标记为True
mask = all_dataframe["date"].str.findall(str(search)).str.len() > 0
month_dataframe = all_dataframe[mask]

方案2:更简洁的字符串匹配写法

用str.contains替代findall,代码更精简:

search = '2021-07'
month_dataframe = all_dataframe[all_dataframe["date"].str.contains(search)]

方案3:日期类型最优实践

建议先将date列转换为pandas内置的日期类型,后续做日期类操作的效率和灵活性都更高:

import pandas as pd
# 转换日期列格式
all_dataframe["date"] = pd.to_datetime(all_dataframe["date"])
# 按年月筛选
search = '2021-07'
month_dataframe = all_dataframe[all_dataframe["date"].dt.to_period('M') == search]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 04:45:02