使用Pandas将字符串格式化为日期时间-指令问题

use*_*200 5 python string datetime date pandas

我有一个字符串,表示全年,然后是一年中的ISO周(因此某些年份有53周,因为周计数从一年的第一个完整周开始)。我想使用将其转换为datetime对象pandas.to_datetime()。所以我做:

pandas.to_datetime('201145', format='%Y%W')
Run Code Online (Sandbox Code Playgroud)

它返回:

Timestamp('2011-01-01 00:00:00')
Run Code Online (Sandbox Code Playgroud)

这是不对的。或者,如果我尝试:

pandas.to_datetime('201145', format='%Y%V')
Run Code Online (Sandbox Code Playgroud)

它告诉我这%V是一个错误的指令。

我究竟做错了什么?

sTr*_*gin 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
Run Code Online (Sandbox Code Playgroud)

然后为您的值运行该函数并将它们作为日期时间对象附加到数据帧。

我从你指定的字符串得到的结果是:

2011-11-07
Run Code Online (Sandbox Code Playgroud)