首页 > 解决方案 > 根据日期条件删除行

问题描述

我有一个 Pandas DataFrame new,其中YearMonth列的日期格式为 YYYY-MM。我想根据条件删除行:如果日期超出“2020-05”。我尝试使用这个:

new = new.drop(new[new.YearMonth>'2020-05'].index)

但它无法显示“无效令牌”的语法错误。

这是一个示例数据框:

>>> new = pd.DataFrame({
    'YearMonth': ['2014-09', '2014-10', '2020-09', '2021-09']
})
>>> print(new)
    YearMonth
0   2014-09
1   2014-10
2   2020-09
3   2021-09

丢弃后的预期 DataFrame 应该是:


    YearMonth
0   2014-09
1   2014-10

标签: pythonpandasdataframedaterows

解决方案


只需转换为日期时间,然后将其格式化为月份并对其进行子集化。

from datetime import datetime as dt

new['YearMonth']=pd.to_datetime(new['YearMonth']).dt.to_period('M')
new=new[~(new['YearMonth']>'2020-05')]

推荐阅读