python - 根据日期条件删除行
问题描述
我有一个 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
解决方案
只需转换为日期时间,然后将其格式化为月份并对其进行子集化。
from datetime import datetime as dt
new['YearMonth']=pd.to_datetime(new['YearMonth']).dt.to_period('M')
new=new[~(new['YearMonth']>'2020-05')]
推荐阅读
- c# - 如何使用 json.net 反序列化嵌套类?
- image - 如何在颤动中向图像添加文本
- javascript - 单击浏览器上的后退按钮时如何加载确切的页面?
- unity3d - 无法将场景对象拖到公共 UnityEvent 上
- android - 什么可能会改变声音输出
- javascript - 浏览器未在启用 CORS 的情况下跨域跨域发送 cookie
- azure - 如何从 AI 日志中排除参数?
- javascript - 从文档中复制了 material-ui 中的对话框代码,但不起作用,我做错了什么?
- python - 如何以编程方式启动新控制台并在其中运行命令?
- angular - 带有自动完成功能的 Angular Material DatePicker 用户输入错误