我有一个字符串是全年,后面是一年中的ISO周(所以有些年份有53周,因为一周的计数从一年的第一个完整周开始)。我想使用datetime
将其转换为pandas.to_datetime()
对象。所以我这样做:
pandas.to_datetime('201145', format='%Y%W')
然后它返回:
Timestamp('2011-01-01 00:00:00')
这是不对的。或者,如果我尝试:
pandas.to_datetime('201145', format='%Y%V')
它告诉我%V
是一个糟糕的指令。
我做错了什么?
答案 0 :(得分:2)
我认为以下问题对您有用:Reversing date.isocalender()
使用该问题中提供的功能,我将继续这样做:
import datetime
import pandas as pd
def iso_year_start(iso_year):
"The gregorian calendar date of the first day of the given ISO year"
fourth_jan = datetime.date(iso_year, 1, 4)
delta = datetime.timedelta(fourth_jan.isoweekday()-1)
return fourth_jan - delta
def iso_to_gregorian(iso_year, iso_week, iso_day):
"Gregorian calendar date for the given ISO year, week and day"
year_start = iso_year_start(iso_year)
return year_start + datetime.timedelta(days=iso_day-1, weeks=iso_week-1)
def time_stamp(yourString):
year = int(yourString[0:4])
week = int(yourString[-2:])
day = 1
return year, week, day
yourTimeStamp = iso_to_gregorian( time_stamp('201145')[0] , time_stamp('201145')[1], time_stamp('201145')[2] )
print yourTimeStamp
然后为您的值运行该函数,并将它们作为日期时间对象追加到数据框中。
我从你指定的字符串得到的结果是:
2011-11-07