YYYY-MM-DD 日期到儒略日 python
YYYY-MM-DD date to Julian day in python
我的 df 中有一个日期列(对象),格式如下所示。
我需要转换此列或创建一个包含 5 位儒略日期的新日期列,格式为 YYDDD
。不确定如何在 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 专家,但以下内容可能对您有用:
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
我向您保证有更好的方法(肯定有办法避免临时列)。这是我第一次为 pandas 写任何东西,所以请原谅。如果有人想投反对票,我会挑战他们向我们展示更好的解决方案;我很想知道这样做的正确方法:)
您可以使用 strftime
, check 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
我的 df 中有一个日期列(对象),格式如下所示。
我需要转换此列或创建一个包含 5 位儒略日期的新日期列,格式为 YYDDD
。不确定如何在 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 专家,但以下内容可能对您有用:
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
我向您保证有更好的方法(肯定有办法避免临时列)。这是我第一次为 pandas 写任何东西,所以请原谅。如果有人想投反对票,我会挑战他们向我们展示更好的解决方案;我很想知道这样做的正确方法:)
您可以使用 strftime
, check 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