将日期附加到时间序列数据时出错

时间:2014-03-26 06:06:57

标签: python pandas time-series

我正在尝试在时间序列数据上添加日期。

以下是时间序列数据的输出,名为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

有人可以建议我在时间序列数据上附加日期的方法吗?

2 个答案:

答案 0 :(得分: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')

附加此内容不会显示错误:

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 +)。

答案 1 :(得分: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))