如何在Python中基于mm-dd-yy格式日期筛选数据集行?
解决Pandas中基于mm-dd-yy格式日期筛选数据的问题
嘿,作为Python新手遇到日期格式的困扰太正常了,我来一步步帮你搞定这个筛选需求!
首先,你之前尝试转换日期格式没成功,大概率是没在pd.to_datetime里指定正确的格式参数。咱们先把StartDate列转换成Pandas的datetime类型,这样后续的日期筛选会非常灵活可靠:
步骤1:正确转换日期格式
使用pd.to_datetime并指定格式%m-%d-%y(完全对应你数据里的mm-dd-yy格式),就能准确解析你的日期数据:
import pandas as pd import numpy as np # 你的示例数据集 date = ["12-28-12", "12-29-12", "12-30-12", "01-12-13", "02-25-13", "02-10-13", "03-28-13", "03-29-13"] df = pd.DataFrame({'Line1': np.arange(8), "StartDate": date}) # 将日期列转换为Pandas datetime类型 df['StartDate'] = pd.to_datetime(df['StartDate'], format='%m-%d-%y')
步骤2:筛选2013年及以后的数据
转换完成后,我们可以通过dt.year提取日期的年份,轻松筛选出2013年及之后的行:
# 筛选保留2013年及以后的数据 filtered_df = df[df['StartDate'].dt.year >= 2013] print(filtered_df)
运行这段代码后,你会得到想要的结果——前三行2012年的数据被成功删除:
Line1 StartDate 3 3 2013-01-12 4 4 2013-02-25 5 5 2013-02-10 6 6 2013-03-28 7 7 2013-03-29
额外小技巧:按精确日期范围筛选
如果你想更精准地筛选(比如从2013年1月1日开始),也可以直接和datetime对象比较,这种方式在需要筛选具体日期区间时更灵活:
filtered_df = df[df['StartDate'] >= pd.to_datetime('2013-01-01')]
内容的提问来源于stack exchange,提问作者EllenQ
相关产品推荐
相关产品推荐

