2017-07-14 21 views
1

我有 一個熊貓數據幀在我想改變如何更改numpy datetime64中的年份值?

'2011-11-14T00:00:00.000000000' 

的數據:

'2010-11-14T00:00:00.000000000' 

或一年。 Timedelta未知,只能分配年份號。 this int in int

Dates_profit.iloc[50][stock].astype('datetime64[Y]').astype(int)+1970 

但無法賦值。 任何人都知道如何將年份分配到numpy.datetime64

回答

0

考慮以下方法:

In [115]: df 
Out[115]: 
     Date 
0 2000-01-01 
1 2001-02-02 
2 2002-03-03 
3 2003-04-04 
4 2004-05-05 

In [116]: df.loc[:, 'Date'] = df['Date'].apply(lambda x: x.replace(year=1999)) 

In [117]: df 
Out[117]: 
     Date 
0 1999-01-01 
1 1999-02-02 
2 1999-03-03 
3 1999-04-04 
4 1999-05-05 
+0

這對我不起作用,說「AttributeError:'numpy.datetime64'對象沒有屬性'替換'」。 –

0

numpy.datetime64對象是很難的工作。要更新的值,它通常是更容易的日期轉換爲標準的Python datetime對象,做的修改,然後再轉換回一個numpy.datetime64值:

import numpy as np 
from datetime import datetime 

dt64 = np.datetime64('2011-11-14T00:00:00.000000000') 

# convert to timestamp: 
ts = (dt64 - np.datetime64('1970-01-01T00:00:00Z'))/np.timedelta64(1, 's') 

# standard utctime from timestamp 
dt = datetime.utcfromtimestamp(ts) 

# update year 
dt.replace(year=2010) 

# convert back to numpy.datetime64: 
dt64 = np.datetime64(dt) 

可能有更簡單的方法,但這種作品, 至少。

+0

謝謝,這是有效的,問題是它需要很多時間來轉換相當小的DataFrame。 –