Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将朱利安日期转换为数据帧中的正常日期?_Python_Pandas_Datetime_Dataframe - Fatal编程技术网

Python 将朱利安日期转换为数据帧中的正常日期?

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函数,但它不起作用。我也试着写这样的代码,

我有一个日期栏,里面有朱利安的日期。如何将这些儒略日期转换为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
函数,但它不起作用。我也试着写这样的代码,但没有用

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