样本数据:
Week Price
2011-31 1.58
2011-32 1.9
2011-33 1.9
2011-34 1.9
我有一个如上所述的数据框,我想将“ Week”列类型从字符串转换为日期时间。
我的代码:
data['Date_Time'] = pd.to_datetime(data.Week, format='%Y-%W')
data = data.drop(['Week'], axis=1)
data.index = data.Date_Time
错误:
“ ValueError:没有日期和年份,不能使用'%W'或'%U'”
答案 0 :(得分:2)
%W
使用星期一作为一周的第一天。
import datetime
week = '2011-31'
date=datetime.datetime.strptime(week + '-1', "%Y-%W-%w")
print(date)
答案 1 :(得分:1)
您需要通过参数%w
指定星期几:
data['Date_Time'] = pd.to_datetime(data.Week + '0', format='%Y-%W%w')
print (data)
Week Price Date_Time
0 2011-31 1.58 2011-08-07
1 2011-32 1.90 2011-08-14
2 2011-33 1.90 2011-08-21
3 2011-34 1.90 2011-08-28
对于DatetimeIndex
,将DataFrame.pop
与rename
一起使用:
data.index = pd.to_datetime(data.pop('Week') + '0', format='%Y-%W%w').rename('Date')
print (data)
Price
Date
2011-08-07 1.58
2011-08-14 1.90
2011-08-21 1.90
2011-08-28 1.90