【发布时间】:2014-12-23 09:23:11
【问题描述】:
我有一个数据框,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
【问题讨论】:
-
你能举一个小例子来说明你的数据实际上是什么样的吗?最好只打印该系列的前 10 个项目
-
谢谢。您的替换操作是否基本上试图确保每个日期中的日期都是零填充的,所以
4/1/2012 -> 4/01/2012?你想达到什么日期格式? -
完全正确,我实际上希望它们采用日期时间格式。但我认为您不能将日期时间对象存储在数据框的单元格中,所以我认为 20120401 将是存储它的最简单方法,但是一旦我从 / 中获得 0,我就可以完成其余的工作。跨度>
-
Pandas 实际上有内置的日期时间支持,你可以做
df['StartDate'] = pd.to_datetime(df['StartDate']),然后通过df.StartDate.dt.<methods>访问日期时间方法(尽管.dt部分可能只有在你使用v0.15 时才有效熊猫) -
您先生,为我节省了大量时间,真是神。回答,我会给你最好的。
标签: python string pandas substring