2014-03-26 37 views
3

我正在嘗試追加日期到時間序列數據。向時間序列數據追加日期時出錯

以下是時間序列數據,命名爲timseries_data的輸出:

timseries_data 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2013-11-01 00:00:00, ..., 2014-02-15 00:00:00] 
Length: 107, Freq: D, Timezone: None 

我要附加到最新系列20140216日期。目前我正在使用append命令來更新系列。代碼:

start_date=datetime.strptime(date_range[1],'%Y%m%d') 
date.append(start_date) 

但這種做法我打這個錯誤:

ValueError: all the input arrays must have same number of dimensions 

有人可以給我建議什麼好方法能夠追加日期時間序列數據?

+0

呀,'append'仍然沒有工作0.18.1。 '.insert'可以工作,但是用'insert',你不能在最後的地方插入 – jf328

回答

1

通常最好避免追加(通常最好/使用concat或join更高效)。

話說,你可以做到這一點,你只需要確保您追加datetime64(否則你會看到,你看到的錯誤!):

In [11]: rng = pd.date_range('2014', periods=4) 

In [12]: t 
Out[12]: Timestamp('2014-03-26 00:49:33.160282', tz=None) 

In [13]: t.asm8 
Out[13]: numpy.datetime64('2014-03-25T17:49:33.160282000-0700') 

與此億韓元追加「T顯示錯誤:

In [14]: np.append(a, t.asm8) 
Out[14]: 
array(['2014-03-25T17:00:00.000000000-0700', 
     '2014-03-26T17:00:00.000000000-0700', 
     '2014-03-27T17:00:00.000000000-0700', 
     '2014-03-28T17:00:00.000000000-0700', 
     '2014-03-25T17:49:33.160282000-0700'], dtype='datetime64[ns]') 

In [15]: pd.DatetimeIndex(np.append(a, t.asm8)) 
Out[15]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2014-03-26 00:00:00, ..., 2014-03-26 00:49:33.160282] 
Length: 5, Freq: None, Timezone: None 

*這可能需要近numpy的版本(即1.7+)。

+0

np.append似乎在工作。但根據你的建議,我嘗試使用np.concatenate,它沒有工作:( – user68101

+0

@ user68101建議是爲DataFrames或系列,pd.concat或加入/合併:http://pandas.pydata.org/pandas-docs/stable /merging.html,這真的取決於你在做什麼。 –

0

嘗試聯合:

timeseries_data = pd.date_range('2013-11-01', '2014-02-15', freq='D') 
    timeseries_data = timeseries_data.union(pd.date_range('2014-02-16', periods=1)) 
相關問題