技术求助:如何实现每月最晚日期及倒数第二日期的筛选?
表格日期筛选解决方案
需求1:筛选每月倒数第二个日期的数据
- 核心逻辑:先确定当前日期所在月份的最后一天,再往前推1天得到倒数第二个日期,匹配表格内日期完成筛选
- Excel实现步骤:
- 计算当前日期所在月的最后一天:
=EOMONTH(A2,0) - 推导倒数第二个日期:
=EOMONTH(A2,0)-1 - 设置筛选条件为
A2=EOMONTH(A2,0)-1,勾选后即可得到目标数据
- 计算当前日期所在月的最后一天:
- Python Pandas实现代码:
import pandas as pd # 读取数据,假设日期列名为'Date' df = pd.read_csv('your_data.csv') df['Date'] = pd.to_datetime(df['Date']) # 计算每个月的最后一天与倒数第二天 df['last_day'] = df['Date'] + pd.offsets.MonthEnd(0) df['second_last_day'] = df['last_day'] - pd.Timedelta(days=1) # 筛选匹配的数据 result = df[df['Date'] == df['second_last_day']].drop(columns=['last_day', 'second_last_day']) print(result)
需求2:筛选每月最晚日期对应的数据
示例原表格
| Date | 其他字段 |
|---|---|
| 1/1/2022 | x ... |
| 1/8/2022 | x ... |
| 2/5/2022 | x ... |
| 2/28/2022 | x ... |
| 3/5/2022 | x ... |
| 3/5/2022 | x ... |
| 4/10/2022 | x ... |
| 4/15/2022 | x ... |
| 4/28/2022 | x ... |
期望返回表格
| Date | 其他字段 |
|---|---|
| 1/8/2022 | x ... |
| 2/28/2022 | x ... |
| 3/5/2022 | x ... |
| 3/5/2022 | x ... |
| 4/28/2022 | x ... |
实现方法
- Excel操作:
- 添加辅助列,计算当前日期所在月的最大日期:
=MAX(IF(MONTH(A$2:A$10)=MONTH(A2),A$2:A$10))(需按Ctrl+Shift+Enter作为数组公式输入) - 设置筛选条件为
A2=辅助列对应值,即可筛选出每月最晚日期的数据
- 添加辅助列,计算当前日期所在月的最大日期:
- Python Pandas实现代码:
import pandas as pd df = pd.read_csv('your_data.csv') df['Date'] = pd.to_datetime(df['Date']) # 按年-月分组,标记每组的最大日期 df['max_date'] = df.groupby([df['Date'].dt.year, df['Date'].dt.month])['Date'].transform('max') # 筛选匹配的数据 result = df[df['Date'] == df['max_date']].drop(columns=['max_date']) print(result)
内容的提问来源于stack exchange,提问作者iamyolanda
相关产品推荐
相关产品推荐

