2014-10-28 35 views
0

我有一个数据帧,df.用另一个子大熊猫蟒蛇更换子

我想从最后一个字符用0替换7日至5日,如果它是一个/:

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

你可以显示一个小的前充足的数据实际上看起来像什么?最好只打印该系列的前10个项目 – Marius 2014-10-28 03:31:33

+1

谢谢。您的替换操作是否基本上试图确保每个日期的日期都是零填充的,因此“2012年4月1日 - > 2012年4月1日”?你想要达到什么样的日期格式? – Marius 2014-10-28 03:42:33

+0

这是完全正确的,我真的希望他们在日期时间格式。但我不认为你可以将一个日期时间对象存储在一个数据框的单元格中,所以我认为20120401将是最简单的方法来存储它,但是一旦我从0得到0,我就可以完成剩下的工作。 – robertevansanders 2014-10-28 03:51:34

回答

1

大熊猫内置支持datetime对象(熊猫可能有自己的实现,而不是直接使用标准库,但想法是一样的),所以不用试图用字符串方法重新设置日期,转换为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