Pandas中将字符串日期列转PeriodIndex并保留后缀的解决方案问询
解决方案
你可以通过自定义函数逐行处理date列,跳过合计行的-值,单独提取日期部分转PeriodIndex后再拼接Total后缀即可,完整实现代码如下:
import pandas as pd def date_convert(val): # 直接返回合计行的特殊占位符 if val == "-": return val # 拆分日期部分和后缀内容,仅拆分1次避免后续内容异常 date_raw, suffix = val.split(maxsplit=1) # 转年度Period后拼接后缀返回 return f"{pd.Period(date_raw, freq='Y')} {suffix}" df["date"] = df["date"].apply(date_convert)
如果后续需要用日期做聚合、筛选等时间运算,可以额外新增一列存储纯Period类型值,避免来回转换:
# 新增纯年度Period列 df["year"] = pd.to_datetime(df["date"].str.extract(r"^(\d{4})", expand=False), format="%Y").dt.to_period("Y")
执行上述代码后得到的结果和你预期的输出完全一致。
内容的提问来源于stack exchange,提问作者jcunhafonte
相关产品推荐
相关产品推荐

