2015-07-13 280 views
1

我有一個日期列的數據類型爲datetime64 [ns]的熊貓數據框。數據幀中有超過1000個觀測值。我想改造下面幾列:熊貓列日期轉換

date 
2013-05-01 
2013-05-01 

date 
05/2013 
05/2013 

date 
05-2013 
05-2013 

編輯//

這是我的示例代碼截至目前

test = pd.DataFrame({'a':['07/2017','07/2017',pd.NaT]}) 

      a 
0 2017-07-13 
1 2017-07-13 
2  NaT 

test['a'].apply(lambda x: x if pd.isnull(x) == True else x.strftime('%Y-%m')) 

0 2017-07-01 
1 2017-07-01 
2   NaT 
Name: a, dtype: datetime64[ns] 

爲什麼只有日期變化而不是格式?

+0

是否要將信息存儲爲字符串?如果你想保留它作爲一個適當的日期時間列,日間信息是不可避免的(據我所知)。 –

+0

正確的日期時間列,如果不可能然後字符串 –

回答

2

您可以使用strftime方法將datetime64轉換爲您喜歡的任何字符串格式。在你的情況下,你會像這樣應用它:

df.date = df.date[df.date.notnull()].map(lambda x: x.strftime('%m/%Y')) 
df.date 
Out[111]: 
0 05/2013 
1 05/2013 
+0

我收到一個錯誤:ValueError:year = 1在1900之前; datetime strftime()方法需要year> = 1900。在1900年之前我沒有任何年份。 –

+0

你能找出它失敗的行嗎? (代碼適用於你所包含的例子) – maxymoo

+0

這是NaN的。我怎麼寫一個lambda函數來繞過NaN? –