2014-10-28 50 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