Pandas 时间序列 - 将值添加到每年的第一个值

Pandas Time Series - add a value to the first value in each year

我有一个 Pandas 间隔不均匀 dates/datapoints 的时间序列。我想将每个数据点的值加 1,这是每年的第一个值。 时间序列非常稀疏,数据经过排序。

有没有更好的方法通过遍历所有数据点并检查年份何时更改?

示例:

dates = [datetime(2012, 1, 1, 1, 1), datetime(2012, 1, 1, 1, 2), datetime(2012, 1, 2, 0 ,0), datetime(2013, 1, 2, 0, 0), datetime(2014, 1, 3, 1, 1)]

ts = Series(np.random.randn(len(dates)), dates)

使用上面的示例,我想将 2012-01-01 01:01:002013-01-02 00:00:002014-01-03 01:01:00

的值加 1

当然可以。您可以提取年份:

ts.index.year

找到相邻差异非零的位置:

np.diff(ts.index.year) != 0

请记住,您还想 select 第一个数据点:

np.concatenate(([True], np.diff(ts.index.year) != 0))

然后修改那些数据点:

ts[np.concatenate(([True], np.diff(ts.index.year) != 0))] += 1