如何在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
相关产品推荐
相关产品推荐

