如何从格式不统一的period列拆分出period_start和period_end?
从period列提取周期起始/结束日期的正确方法
需求
从period列中提取周期起始日期(period_start)和周期结束日期(period_end),原始数据中日期格式可能混用dd-mm-yyyy与dd.mm.yyyy,日期间的连接符可能是带空格的-、不带空格的-或半空格的- ,最终输出需统一日期格式为dd.mm.yyyy。
原始数据与问题
现有period列数据:
28-02-2022 - 30.09.2022 31.01.2022 - 31.12.2022 28.02.2019 - 30-04-2020 20.01.2019-22.02.2020 19.03.2020- 24.05.2021 13.09.2022-12-10.2022
原代码直接按-分割:
df[['period_start','period_end']]= df['period'].str.split('-',expand=True)
该方法无法实现需求,因为会错误分割日期内部的-,导致提取结果混乱。
正确解决方案
使用正则表达式提取完整的日期段,再统一日期格式:
# 提取两个日期部分,兼容日期间各种空格+减号的组合 df[['period_start', 'period_end']] = df['period'].str.extract(r'^([\d.-]+)\s*-\s*([\d.-]+)$') # 将日期中的'-'替换为'.',统一格式 df['period_start'] = df['period_start'].str.replace('-', '.') df['period_end'] = df['period_end'].str.replace('-', '.')
处理后输出
period_start period_end 28.02.2022 30.09.2022 31.01.2022 31.12.2022 28.02.2019 30.04.2020 20.01.2019 22.02.2020 19.03.2020 24.05.2021 13.09.2022 12.10.2022
内容的提问来源于stack exchange,提问作者luc
相关产品推荐
相关产品推荐

