如何在DataFrame中筛选每月最早与最晚日期的数据?
筛选DataFrame中每月最早和最晚日期对应的数据
针对数万行的大数据量,推荐用Pandas的矢量化操作高效实现,步骤如下:
- 转换日期格式:先把字符串类型的
Date列转为Pandas可识别的日期时间类型(注意原数据是日/月/年格式):
import pandas as pd # 假设你的数据存储在df中 df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')
- 提取每月首尾日期:按年-月分组,获取每个月的最早和最晚日期:
# 按年月分组,提取每组的最小、最大日期 month_groups = df.groupby(df['Date'].dt.to_period('M'))['Date'] target_dates = month_groups.min().tolist() + month_groups.max().tolist()
- 筛选目标行:用
isin()匹配日期,筛选出对应数据:
result = df[df['Date'].isin(target_dates)] # 可选:按日期排序,保持每个月首尾的顺序 result = result.sort_values('Date')
执行后得到的result就是每个月最早和最晚日期对应的行,和你给出的期望输出一致。
内容的提问来源于stack exchange,提问作者Robsmith
相关产品推荐
相关产品推荐

