从年份和朱利安日在熊猫中创建日期时间

Posted

技术标签:

【中文标题】从年份和朱利安日在熊猫中创建日期时间【英文标题】:Creating datetime in pandas from year and julian day 【发布时间】:2016-10-30 06:11:23 【问题描述】:
                  ad_name    adl_name  year  JD 
0  united_states_of_america  colorado  2000   1 
1  united_states_of_america  colorado  2000   2 
2  united_states_of_america  colorado  2000   3 
3  united_states_of_america  colorado  2000   4 
4  united_states_of_america  colorado  2000   5 

如何使用yearJD(儒略日)列添加日期时间列?我试图使用:

pd.to_datetime(df, format='%Y_%d'),但这不起作用

【问题讨论】:

我不确定我是否理解julian day。和day有区别吗? 儒略日是一年中的一天,从 1 到 365/366 【参考方案1】:

您需要添加到yearJD 转换为to_timedelta

df['date'] = pd.to_datetime(df.year, format='%Y') + pd.to_timedelta(df.JD - 1, unit='d')
print (df)
                    ad_name  adl_name  year  JD       date
0  united_states_of_america  colorado  2000   1 2000-01-01
1  united_states_of_america  colorado  2000   2 2000-01-02
2  united_states_of_america  colorado  2000   3 2000-01-03
3  united_states_of_america  colorado  2000   4 2000-01-04
4  united_states_of_america  colorado  2000   5 2000-01-05

JD=32JD=366 的示例:

print (df)
                    ad_name  adl_name  year   JD
0  united_states_of_america  colorado  2000   32
1  united_states_of_america  colorado  2000  366

df['date'] = pd.to_datetime(df.year, format='%Y') + pd.to_timedelta(df.JD - 1, unit='d')
print (df)
                    ad_name  adl_name  year   JD       date
0  united_states_of_america  colorado  2000   32 2000-02-01
1  united_states_of_america  colorado  2000  366 2000-12-31

【讨论】:

儒略日从 1 到 365 / 366(闰年)是否有效?

以上是关于从年份和朱利安日在熊猫中创建日期时间的主要内容,如果未能解决你的问题,请参考以下文章

如何从包含文本的熊猫数据框中的列中提取年份(或日期时间)

尝试在 Redshift 中创建日期表

在 Azure 突触分析中创建日期维度

如何按月份和年份输入过滤具有日期时间索引的数据框?熊猫

年份显示不正确

熊猫将带有年份整数的列转换为日期时间