我有一个数据框df.
我想将最后一个字符的第7个到第5个替换为0,如果它是/:
df['StartDate'].str[-7:-5]=df['StartDate'].str[-7:-5].str.replace('/', '0')
返回错误:
TypeError: 'StringMethods' object does not support item assignment
数据如下:
number StartDate EndDate Location_Id Item_Id xxx yyy\
3 460 4/1/2012 4/11/2012 2502 3890004215 0 0
28 2731 10/17/2013 10/30/2013 3509 5100012114 0 0
34 1091 1/10/2013 1/23/2013 2544 5100012910 0 0
134 1630 5/2/2013 5/15/2013 2506 69511912000 0 0
138 327 1/12/2012 1/25/2012 5503 1380016686
答案 0 :(得分:1)
Pandas内置了对datetime
个对象的支持(pandas可能有自己的实现,而不是直接使用标准库,但想法是一样的),所以不要尝试使用string重新格式化日期方法,转换为datetime
要容易得多:
df['StartDate'] = pd.to_datetime(df['StartDate'])
转换后,有一些易于使用的与datetime对象相关的方法可以通过.dt
访问器获取(可能是v0.15中最近添加的):
df.StartDate.dt.month
Out[20]:
3 4
28 10
34 1
134 5
138 1
dtype: int64