将连续数字重新编码为 Python 中的连续日期

Recode continuous number into continuous dates in Python

我有一个变量看起来像

1,1,1,1, 2,2,2,3,3,3,3,3,4,4,5,6,6,6, ,.....100,100,100
I would like to recode them into dates
1=31.12.2020
2=30.12.2020
3=29.12.2020
...

在我的实际情况下,将有超过1000个(或更多)日期需要重新编码,并且还要考虑闰年。

感谢 python pandas.

是否有一种优雅的处理方式

非常感谢您帮助初学者。

Pandas 有一个“date_range”方法,可以 return 基于开始日期、~'increment' 和一个规则间隔的日期对象序列结束日期。您可以使用它来构建以单日为间隔的日期序列,然后使用它来将每个索引 (1,1,1,2,2,...) 与 [=16= 中的日期对象相关联]序列。

pandas date_range docs

您可以使用 pd.date_rangepd.DateOffset

创建一个简单的字典
range_var = list(range(1000))
end_date = pd.Timestamp('31.12.2020') 

date_dict = dict(zip(range_var[::-1], #reverse the list.
         pd.date_range(
         end_date - pd.DateOffset(days=max(range_var)),
         end_date,
         freq='D'
            )
        )
    )



df = pd.DataFrame.from_dict(date_dict,orient='index').sort_index()


             0
0   2020-12-31
1   2020-12-30
2   2020-12-29
3   2020-12-28
4   2020-12-27
..         ...
995 2018-04-11
996 2018-04-10
997 2018-04-09
998 2018-04-08
999 2018-04-07