Python Pandas:将yyyyww整数列索引转换为每周一Timestamp
解决方法:将yyyyww格式的整数列索引转换为对应周一的DatetimeIndex
直接给你一套简洁可行的步骤,结合pandas的工具就能轻松搞定:
第一步:将整数列索引转为字符串
因为pd.to_datetime处理字符串格式的周数更可靠,先把你的Int64Index转成字符串类型,确保每个值都是yyyyww的6位格式:cols_as_str = df.columns.astype(str)第二步:解析为对应周一的DatetimeIndex
使用pd.to_datetime,指定格式为%Y%W(4位年份+2位周数),并通过weekday=0指定取该周的周一:new_columns = pd.to_datetime(cols_as_str, format="%Y%W", weekday=0)第三步:重新设置DataFrame的列索引
把转换后的DatetimeIndex赋值回DataFrame的列,同时保留原索引名称'timeline':df.columns = pd.DatetimeIndex(new_columns, name="timeline")
验证示例
针对你提到的测试值:
201601会被解析为Timestamp('2016-01-04 00:00:00')(2016年第1周的周一)201553会被解析为Timestamp('2015-12-28 00:00:00')(2015年第53周的周一)
这个方法完美适配你104列的场景,不管是常规周数还是53周的特殊情况都能正确处理。
内容的提问来源于stack exchange,提问作者EJ Kang
相关产品推荐
相关产品推荐

