有没有一种方法可以将包含年和日的字符串转换为熊猫时间戳?

例如

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'


如何解决这个问题?

最佳答案

您可以使用%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)。

关于python - 将年中的年和日转换为 Pandas 时间戳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57087438/

10-11 01:31