【问题标题】:YYYY-MM-DD date to Julian day in pythonYYYY-MM-DD日期到python中的儒略日
【发布时间】:2017-07-14 13:34:21
【问题描述】:

我的 df 中有一个日期列(对象),格式如下。

我需要转换此列或创建一个包含YYDDD 格式的 5 位儒略日期的新日期列。不知道如何在 python/pandas 中执行此操作

日期:

2016-03-28          
2016-03-11          
2016-03-12          
2016-03-23          
2016-03-04          
2016-03-02          
2016-03-30         
2016-03-30          
2016-03-13          
2016-03-13

基本上我想根据初始 df['date'] 列在我的 df 中创建一个新列,其中 df['date2'] 是所需的格式。

所以当 date1 = "2016-03-28" date2 = 16088 时

【问题讨论】:

标签: python pandas date date-format date-parsing


【解决方案1】:

您可以使用strftime,查看http://strftime.org/

df = pd.DataFrame({'date': pd.date_range('2016-03-28', periods=5)})
print (df)
        date
0 2016-03-28
1 2016-03-29
2 2016-03-30
3 2016-03-31
4 2016-04-01

df['newFormat'] = df['date'].dt.strftime('%y%j')
print (df)
        date newFormat
0 2016-03-28     16088
1 2016-03-29     16089
2 2016-03-30     16090
3 2016-03-31     16091
4 2016-04-01     16092

【讨论】:

    【解决方案2】:

    我不是 python/pandas 专家,但以下内容可能对您有用:

    import pandas as pd
    df = pd.DataFrame({'date': pd.date_range('2016-03-28', periods=5)})
    df['paddedDay'] = df['date'].dt.dayofyear.apply(lambda x: str(x).zfill(3))
    df['lastTwoOfYear'] = df['date'].dt.year.apply(lambda x: str(x)[-2:])
    df['newFormat'] = df['lastTwoOfYear'].map(str) + df['paddedDay']
    

    这会产生以下结果。

            date paddedDay lastTwoOfYear newFormat
    0 2016-03-28       088            16     16088
    1 2016-03-29       089            16     16089
    2 2016-03-30       090            16     16090
    3 2016-03-31       091            16     16091
    4 2016-04-01       092            16     16092
    

    我向您保证有更好的方法来做到这一点(当然有一种方法可以避免临时列)。这是我第一次为熊猫写东西,所以请原谅混乱。如果有人想投反对票,我会挑战他们向我们展示更好的解决方案;我很想看到这样做的正确方法:)

    【讨论】:

    • 感谢您的帮助。这对于了解您如何分解并将各个部分组合在一起以形成所需的格式很有用。
    • @nakedbird226 不客气。话虽如此,jezrael 使用strftime 的答案是一个更好的答案,应该被接受;)
    猜你喜欢
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多