将年中的年和日转换为熊猫时间戳

时间:2019-07-18 05:04:24

标签: python pandas

是否可以将包含年和日的字符串转换为熊猫时间戳?

例如

a_str = '2000120'  # year 2000, day 120

我尝试过:

pd.Timestamp(year=a_str[:4], dayofyear=a_str[4:])

但是我得到这个错误

*** TypeError: __new__() got an unexpected keyword argument 'dayofyear'

该如何解决?

1 个答案:

答案 0 :(得分:3)

您可以使用%j,它是一年中的一天:

In [11]: dt.datetime.strptime("2000120", "%Y%j")
Out[11]: datetime.datetime(2000, 4, 29, 0, 0)

In [12]: pd.to_datetime("2000120", format="%Y%j")
Out[12]: Timestamp('2000-04-29 00:00:00')

注意:文档说:

  

一年中的一天,为零填充的十进制数字。

情况似乎并非如此(即使未填充零也可以使用):

In [13]: dt.datetime.strptime("200020", "%Y%j")
Out[13]: datetime.datetime(2000, 1, 20, 0, 0)

In [14]: pd.to_datetime("200020", format="%Y%j")
Out[14]: Timestamp('2000-01-20 00:00:00')

我认为您不能在此处使用Timestamp构造函数,而必须使用to_datetime方法(允许您传递format)。