是否可以将包含年和日的字符串转换为熊猫时间戳?
例如
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'
该如何解决?
答案 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
)。