Pandas处理新闻爬取数据:补全缺失日期并拆分日期时间独立列
结合Finviz新闻页的固定列表规则(同日期新闻条目始终紧跟当日首条带完整时间戳的行,整体按时间倒序排列),用以下Pandas逻辑就能完成全部清洗,完全匹配补全要求:
实现逻辑
- 先识别所有带完整日期前缀的行(规则:单元格内容包含空格,即「日期 时间」的组合格式),提取出对应的日期值,其余行的日期位置暂留空
- 对提取出的临时日期列执行向前填充,让同组缺失日期的条目自动继承上一行的日期值
- 提取每行的纯时间部分,与填充后的日期值拼接为完整时间格式
- 最终拆分生成独立的日期、时间字段
可直接复用的代码
在你现有爬取逻辑之后追加以下代码即可适配:
# 强制将Date列转为字符串类型,避免混合格式报错 news['Date'] = news['Date'].astype(str) # 提取完整行的日期前缀,非完整行留空 news['group_date'] = news.loc[news['Date'].str.contains(' '), 'Date'].str.split(n=1).str[0] # 向前填充所有缺失的日期值 news['group_date'] = news['group_date'].ffill() # 提取每行的纯时间部分(无论原格式是否带日期前缀) news['time_part'] = news['Date'].str.split(n=1).str[-1] # (可选)生成保留完整「日期+时间」组合的字段 news['full_datetime'] = news['group_date'] + ' ' + news['time_part'] # 替换原Date列为纯日期格式,新增独立的Time时间列 news['Date'] = news['group_date'] news['Time'] = news['time_part'] # 清理临时辅助列 news = news.drop(columns=['group_date', 'time_part'])
适配性说明
- 匹配你给出的示例数据时,第一行提取的
group_date为Feb-23-21,后续9行纯时间条目会自动继承这个日期,拼接后完全符合预期的补全效果 - 当读到第10行的完整时间戳
Feb-22-21 07:00PM时,临时日期值会自动更新为新日期,后续同组条目会匹配到这个新日期,不会出现填充错位
内容的提问来源于stack exchange,提问作者Taimorr Mughal
相关产品推荐
相关产品推荐

