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:00
、2013-01-02 00:00:00
和 2014-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
我有一个 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:00
、2013-01-02 00:00:00
和 2014-01-03 01:01:00
当然可以。您可以提取年份:
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