替换DataFrame日期时间列多个相对时间值为标准datetime格式
葡萄牙语相对日期转标准datetime解决方案
实现思路
根据给出的转换规则,核心逻辑为:
- 以2021年8月1日为基准日期
- 分钟、小时、1天三类相对时间直接返回基准日期
- 带月单位的相对时间,减去对应月份后取当月1日作为结果
代码实现
依赖库导入
import pandas as pd from dateutil.relativedelta import relativedelta from datetime import datetime
自定义转换函数
# 配置基准日期与单位映射 base_date = datetime(2021, 8, 1) def convert_date(raw_val): # 拆分数值与单位 num, unit = raw_val.strip().split(maxsplit=1) num = int(num) # 处理天及以内的时间单位 if unit in ['minutos', 'horas', 'dia']: return base_date # 处理月单位 elif unit in ['mês', 'meses']: offset_date = base_date - relativedelta(months=num) # 对齐示例规则,返回当月1日 return datetime(offset_date.year, offset_date.month, 1) # 未知单位返回空值 return pd.NaT
应用到DataFrame
# 转换后列直接为datetime64类型 df['Data Posted'] = df['Data Posted'].apply(convert_date)
补充说明
如果基准日期不是固定值(比如以爬虫执行当日为基准),只需把base_date的赋值改为datetime.today()即可,其余逻辑无需调整。
内容的提问来源于stack exchange,提问作者conradobio
相关产品推荐
相关产品推荐

