我有一个 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
上的值加 1和2014-01-03 01:01:00
最佳答案
当然。您可以提取年份:
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
关于python - Pandas 时间序列 - 在每年的第一个值上添加一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28616865/