python - Pandas 时间序列 - 在每年的第一个值上添加一个值

标签 python datetime pandas

我有一个 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:002013-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/

相关文章:

SQL Server 和日期 + 1 结果

python - 无法从一个日期时间列中减去另一列,减去操作不能使用类型为 dtype ('S1' ) 和 dtype ('<M8[ns]' ) 的操作数

pandas - 按自定义顺序对图例进行排序

python - 使用 python 选择文本的特定部分

python - 更新文本文件python中的单个字段

python - 给定 k 个标记的最大项目

python - 将大型数据帧(pandas)分割成 block (但在分组之后)

python - 使用 OpenCV 3 和 numpy 创建缩略图马赛克

python - 如何在Python 3.5中的日期时间列表中选择日期和小时

datetime - 如何在容器中注入(inject) Docker 容器构建时间戳?