Python 将朱利安日期转换为数据帧中的正常日期?
我有一个日期栏,里面有朱利安的日期。如何将这些儒略日期转换为mm dd yyyy格式 样本数据Python 将朱利安日期转换为数据帧中的正常日期?,python,pandas,datetime,dataframe,Python,Pandas,Datetime,Dataframe,我有一个日期栏,里面有朱利安的日期。如何将这些儒略日期转换为mm dd yyyy格式 样本数据 ORG CHAIN_NBR SEQ_NBR INT_STATUS BLOCK_code_1 DATA_BLOCK_code_1 0 523 1 0 A C 2012183 1523 2 1 I A 2013025 2 521 3 1 A H 2007067 3513 4 1D H 2001046 4513 518 I 2006075 我使用的是jd2gcal函数,但它不起作用。我也试着写这样的代码,
ORG CHAIN_NBR SEQ_NBR INT_STATUS BLOCK_code_1 DATA_BLOCK_code_1
0 523 1 0 A C 2012183
1523 2 1 I A 2013025
2 521 3 1 A H 2007067
3513 4 1D H 2001046
4513 518 I 2006075
我使用的是jd2gcal
函数,但它不起作用。我也试着写这样的代码,但没有用
for i,row in amna.iterrows():
amna['DATE_BLOCK_CODE_1'] = datetime.datetime.strptime(row['DATE_BLOCK_CODE_1'], '%Y%j')
期望输出:
ORG CHAIN_NBR SEQ_NBR INT_STATUS BLOCK_code_1 DATA_BLOCK_code_1
0 523 1 0 A C mm dd yyyy
1523年2月1日
2521年3月1日
3513 4 1D H mm dd yyyy
4513 518 I mm dd yyyy
请帮我做这个。让我们试试这样的东西
df['New Date'] = (pd.to_datetime((df.DATA_BLOCK_CODE_1 // 1000).astype(str)) +
pd.to_timedelta(df.DATA_BLOCK_CODE_1 % 1000, unit='D'))
print(df)
ORG CHAIN_NBR SEQ_NBR INT_STATUS BLOCK_CODE_1 DATA_BLOCK_CODE_1 New Date
0 523 1 0 A C 2012183 2012-07-02
1 523 2 1 I A 2013025 2013-01-26
2 521 3 1 A H 2007067 2007-03-09
3 513 4 1 D H 2001046 2001-02-16
4 513 5 1 8 I 2006075 2006-03-17
正则表达式将要求数字以0以外的任何数字开头。(我假设DATA\u BLOCK\u code\u 1
是字符串类型。)熊猫有一个origin
参数用于julian到datetime的转换:
amna['Date'] = pd.to_datetime(amna['DATA_BLOCK_CODE_1'], unit='D', origin='julian')
print(df)
ORG CHAIN_NBR SEQ_NBR INT_STATUS BLOCK_CODE_1 DATA_BLOCK_CODE_1 Date
0 523 1 0 A C 2012183 2012-07-02
1 523 2 1 I A 2013025 2013-01-26
2 521 3 1 A H 2007067 2007-03-09
3 513 4 1 D H 2001046 2001-02-16
4 513 5 1 8 I 2006075 2006-03-17
请注意,必须包含unit参数,并且必须将其设置为days('D')
编辑2020-06-27
作为响应,如果DATA\u BLOCK\u code\u 1
列为整数或字符串,则可以将年份拆分(转换为字符串)并分别转换儒略日。本例假设数据块\u代码\u 1
为字符串。结果与上述相同
amna['Date']=[pd.to_datetime(e[:4])+pd.to_timedelta(int(e[4:])-1,unit='D')在amna['DATA\u BLOCK\u code\u code\u 1']]中,对于e,你又快了一点;-)@马克苏:)谢谢。我想知道datetime是否还有比这更为原生的东西。@ScottBoston这很好用,但我的数据块代码1中也有0,如果我有0,那么它就不起作用了。。。。我该怎么处理呢,再次感谢。它抛出了一个错误:给定的“origin”=“julian”的“arg”类型不兼容!
amna['Date'] = pd.to_datetime(amna['DATA_BLOCK_CODE_1'], unit='D', origin='julian')
print(df)
ORG CHAIN_NBR SEQ_NBR INT_STATUS BLOCK_CODE_1 DATA_BLOCK_CODE_1 Date
0 523 1 0 A C 2012183 2012-07-02
1 523 2 1 I A 2013025 2013-01-26
2 521 3 1 A H 2007067 2007-03-09
3 513 4 1 D H 2001046 2001-02-16
4 513 5 1 8 I 2006075 2006-03-17