将儒略日期转换为数据帧中的正常日期?

2024-10-05 12:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个日期栏在熊猫DF与朱利安日期。如何将这些儒略日期转换为mm dd yyyy格式。在

样本数据

     ORG   CHAIN_NBR  SEQ_NBR     INT_STATUS  BLOCK_CODE_1  DATA_BLOCK_CODE_1
0   523         1        0          A             C             2012183
1   523         2        1          I             A             2013025
2   521         3        1          A             H             2007067
3   513         4        1          D             H             2001046
4   513         5        1          8             I             2006075

我正在使用jd2gcal函数,但它不起作用。我也试着写一个这样的代码,但没有用。在

^{pr2}$

期望输出:

    ORG   CHAIN_NBR  SEQ_NBR     INT_STATUS  BLOCK_CODE_1  DATA_BLOCK_CODE_1
0   523         1        0          A             C             mm-dd-yyyy
1   523         2        1          I             A             mm-dd-yyyy
2   521         3        1          A             H             mm-dd-yyyy
3   513         4        1          D             H             mm-dd-yyyy
4   513         5        1          8             I             mm-dd-yyyy

请帮我拿这个。在


Tags: orgchaindfdata格式statuscodeblock
3条回答
julian = df.DATA_BLOCK_CODE_1.str[4:].str.extract("([1-9][0-9]?[0-9]?)")    
df["DATA_BLOCK_CODE_1"] = df.DATA_BLOCK_CODE_1.str[:4] + "-" + julian
df['DATA_BLOCK_CODE_1'] = pd.to_datetime(df['DATA_BLOCK_CODE_1'], format='%Y-%j')

enter image description here

正则表达式要求数字以除0以外的任何数字开头。(我假设DATA_BLOCK_CODE_1是字符串类型。)

让我们试试这样的方法

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

Pandasto_datetime function有一个用于julian到datetime转换的origin参数:

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')。在

相关问题 更多 >

    热门问题