我知道使用DateTime对象,我可以提取一年中的数字日(例如:January 1st = 1,December 31st = 365)with .dayofyear like this:
some_datetime.dayofyear
有没有一种方法可以逆转这一点,并采取一个整数的dayofyear,并将其转换回一个完整的日期?我搜索了日期时间,尝试了一些方法,但似乎都不起作用。
pbwdgjma1#
您可以:
df['date'] = df['days'].apply(lambda x: dt + pd.Timedelta(f'{x}D')) print(df) days date 0 32 2020-02-02 1 150 2020-05-30 2 200 2020-07-19
样本数据
# set some start date dt = pd.to_datetime('2020-01-01') df = pd.DataFrame({'days': [32, 150, 200]})
8yparm6h2#
一个有趣的替代方法是使用pandas的to_datetime()的origin参数:
to_datetime()
origin
days = [32, 150, 200] pd.to_datetime([d-1 for d in days], unit='D', origin=pd.Timestamp('01-01-2020'))
请确保减去一天,因为第一天已经在初始化中考虑。Credits go there.
dly7yett3#
数据是否也包括年份?因为没有年份,你怎么解释闰年?闰年有366天,而不是365天,所以如果像其他任何一年一样对待,这一年将“溢出”,成为1月。一!例如:
s['M-D'] = pd.to_datetime( s['day'], format='%Y %j' ).dt.strftime('%m-%d')
导致366被转换为“01- 01”。然而,包括年工程如预期:
s['M-D'] = pd.to_datetime( ss['year'].astype(str) + ' ' + s['day'].astype(str), format='%Y %j' ).dt.strftime('%m-%d')
结果在2015-12-31当year=2015和day=366.
year=2015
day=366
3条答案
按热度按时间pbwdgjma1#
您可以:
样本数据
8yparm6h2#
一个有趣的替代方法是使用pandas的
to_datetime()
的origin
参数:请确保减去一天,因为第一天已经在初始化中考虑。
Credits go there.
dly7yett3#
数据是否也包括年份?因为没有年份,你怎么解释闰年?闰年有366天,而不是365天,所以如果像其他任何一年一样对待,这一年将“溢出”,成为1月。一!
例如:
导致366被转换为“01- 01”。
然而,包括年工程如预期:
结果在2015-12-31当
year=2015
和day=366
.