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

如何用Python将非规范日期事件数据集转为标准长格式?

问题整理

我有一个包含非格式化日期及对应事件的数据集,当前数据含空行,日期行与事件行交替,格式如下:

date                           event
0   giovedì, 18 novembre 2010       giovedì, 18 novembre 2010
1       
2   MELA Mela Sciences FDA Panel    MELA Mela Sciences FDA Panel
3   martedì, 7 dicembre 2010        martedì, 7 dicembre 2010
4       
5   OREX Orexigen Therapeutics      OREX Orexigen Therapeutics
6       
7   SLXP SALIX PHARMACEUTICALS      SLXP SALIX PHARMACEUTICALS
8   giovedì, 9 dicembre 2010        giovedì, 9 dicembre 2010

需要将其整理为每个事件对应所属日期的标准长格式。

我先尝试删除空行,使用以下代码但未解决问题:

nan_value = float("NaN")
fda.replace("", nan_value, inplace=True)
fda.dropna(subset = ["date"], inplace=True)

之后尝试通过迭代行判断是否为日期行,但不知道如何将下一个日期前的行作为事件关联到对应日期,代码如下:

days=['lunedì','martedì','mercoledì','giovedì','venerdì','sabato','domenica']
for index, row in fda.iterrows():
  string = row['date']
  if any(ext in string for ext in days):
    eventdate = row['date']
    event= ????

寻求解决方法。


解决方案

步骤1:预处理数据,标记日期行与事件行

先清理空行,再给每行标记属性:

import pandas as pd

# 清理全空的行
fda = fda.replace("", pd.NA).dropna(how="all")

# 定义意大利语星期列表
days = ['lunedì','martedì','mercoledì','giovedì','venerdì','sabato','domenica']

# 标记日期行:date列包含星期词的即为日期行
fda['is_date'] = fda['date'].str.contains('|'.join(days), na=False)

步骤2:填充日期并提取事件行

利用向前填充方法,把最近的日期关联到后续事件行:

# 向前填充日期,让每个事件行获取最近的日期
fda['event_date'] = fda[fda['is_date']]['date'].ffill()

# 筛选出事件行(排除日期行本身),并重命名列
result = fda[~fda['is_date']].rename(columns={'date': 'event'}).reset_index(drop=True)

# 保留最终需要的列
result = result[['event_date', 'event']]

最终效果

处理后的数据会呈现标准长格式:

event_date                          event
0  giovedì, 18 novembre 2010  MELA Mela Sciences FDA Panel
1   martedì, 7 dicembre 2010      OREX Orexigen Therapeutics
2   martedì, 7 dicembre 2010      SLXP SALIX PHARMACEUTICALS

核心逻辑:

  • 先清理空行避免干扰
  • 通过字符串匹配标记日期行,再用ffill()实现日期的向下关联
  • 最后筛选事件行,整理成目标结构

内容的提问来源于stack exchange,提问作者Gloria Dalla Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:15:11