我有一个Pandas
时间序列,日期/数据点不均匀。我想将每个数据点的值加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:00
,2013-01-02 00:00:00
和2014-01-03 01:01:00
答案 0 :(得分:3)
不确定。你可以提取年份:
ts.index.year
找出相邻差异非零的位置:
np.diff(ts.index.year) != 0
请记住,您还要选择第一个数据点:
np.concatenate(([True], np.diff(ts.index.year) != 0))
然后修改这些数据点:
ts[np.concatenate(([True], np.diff(ts.index.year) != 0))] += 1