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

Python:移除当前年月之前的DataFrame数据行

过滤DataFrame中早于当前年月的船舶到港记录

这里给你两种可行的解决方案,对应你手头的两种数据格式:

利用完整日期列处理

如果你的数据有格式为%d/%b/%Y的日期列,可以按以下步骤操作:

  • 先把字符串日期转成pandas的datetime类型,方便后续年月比较
  • 取当前年月的第一天作为过滤阈值(比如当前是2022年1月,阈值就是2022-01-01)
  • 保留到港日期所在年月不早于当前年月的记录
import pandas as pd
from datetime import datetime

# 模拟你的船舶数据
data = {
    '到港日期': ['15/Dec/2021', '02/Jan/2022', '20/Jan/2022', '30/Nov/2021'],
    '船舶名称': ['船A', '船B', '船C', '船D']
}
df = pd.DataFrame(data)

# 1. 转换日期列格式
df['到港日期'] = pd.to_datetime(df['到港日期'], format='%d/%b/%Y')

# 2. 获取当前年月的起始日期(自动识别系统当前时间)
current_year_month = datetime.now().replace(day=1, hour=0, minute=0, second=0, microsecond=0)

# 3. 过滤数据:移除早于当前年月的记录
filtered_df = df[df['到港日期'] >= current_year_month]
print(filtered_df)

利用单独的年份、月份列处理

如果数据已经拆分出单独的年份和月份列,直接通过条件判断过滤更高效:

  • 获取当前系统的年份和月份
  • 排除两类记录:年份小于当前年的,或者年份等于当前年但月份小于当前月的
import pandas as pd
from datetime import datetime

# 模拟带单独年月列的船舶数据
data = {
    '年份': [2021, 2022, 2022, 2021],
    '月份': [12, 1, 2, 11],
    '船舶名称': ['船A', '船B', '船C', '船D']
}
df = pd.DataFrame(data)

# 1. 获取当前年和月
current_year = datetime.now().year
current_month = datetime.now().month

# 2. 过滤条件:保留符合要求的记录
filtered_df = df[
    (df['年份'] > current_year) | 
    ((df['年份'] == current_year) & (df['月份'] >= current_month))
]
print(filtered_df)

两种方法都能实现你的需求:比如当前是2022年1月1日时,2021年12月及更早的记录会被自动移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:36:16