You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中临时将日期列转为有序整数并实现往返转换?

实现日期与有序整数的往返转换

核心思路

pd.factorize() 返回的第二个值是唯一日期的有序数组,只要保存这个映射关系,就能完成整数到日期的反向转换。

完整实现代码

import pandas as pd

# 1. 创建原始DataFrame
data = {'date': ['1/1/2022', '1/2/2022','1/3/2022']}
df = pd.DataFrame(data)

# 2. 日期转有序整数:同步保存映射关系
# 先将字符串日期转为datetime类型,再执行factorize
dates = pd.to_datetime(df['date'])
qid, unique_dates = pd.factorize(dates, sort=True)
df['qid'] = qid

print("转换后的DataFrame:")
print(df)

# 3. 有序整数转回原日期
# 利用unique_dates的索引与qid的对应关系映射,可选转回原始字符串格式
df['recovered_date'] = unique_dates[df['qid']].dt.strftime('%m/%d/%Y')

print("\n还原日期后的DataFrame:")
print(df)

关键说明

  • pd.factorize(dates, sort=True) 保证整数按日期升序生成,匹配你需要的0,1,2顺序
  • unique_dates是反向转换的核心,它的索引和qid的整数值一一对应,直接通过索引取值就能取回原日期
  • 如果不需要datetime类型,用dt.strftime()可以还原成和原始格式一致的字符串

内容的提问来源于stack exchange,提问作者Tartaglia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 08:22:05