如何删除pandas DataFrame日期列中前置的星期与逗号
pandas清洗Date列移除星期前缀实现方案
需求说明
你的DataFrame包含Date(日期)、Department Cash flow(部门现金流)两个字段:
Date列原始值格式为「星期名称, 日 月 年」,例:Friday, 1 April 2022- 需要移除日期左侧的星期名称及附带逗号,保留「日 月 年」格式(例:
1 April 2022),支持后续按日期排序
方案1:固定格式字符串直接截取(快速得到目标文本格式)
如果你的数据格式完全统一,没有异常值,直接用字符串分割就能快速得到结果:
# 按逗号拆分字符串,取日期部分后去除首尾多余空格 df['Date'] = df['Date'].str.split(',').str[1].str.strip()
注意:这个方法处理后Date列是字符串类型,直接用字符串排序会出现顺序错乱,排序前必须先转成datetime类型。
方案2:解析为标准日期类型(推荐,适配后续排序/计算需求)
如果后续需要做日期排序、时间维度聚合,更稳妥的方式是先把原始日期解析为pandas原生datetime类型,需要展示「日 月 年」格式时再转成对应文本即可:
import pandas as pd # 按原始格式解析为datetime类型,解析后可直接用于排序、时间计算 df['date_obj'] = pd.to_datetime(df['Date'], format='%A, %d %B %Y') # 若需要保留「日 月 年」的字符串列,执行以下转换即可 # 注意:Windows系统把 %-d 替换为 %#d df['Date'] = df['date_obj'].dt.strftime('%-d %B %Y')
处理完后直接按解析出的日期对象排序即可,不会出现格式导致的排序错误:
# 按日期从早到晚升序排列 df = df.sort_values(by='date_obj', ascending=True).reset_index(drop=True)
内容的提问来源于stack exchange,提问作者Mihan
相关产品推荐
相关产品推荐

