将连续数字重新编码为 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= 中的日期对象相关联]序列。
您可以使用 pd.date_range
和 pd.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
我有一个变量看起来像
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= 中的日期对象相关联]序列。
您可以使用 pd.date_range
和 pd.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