我有一个包含时间序列列的 pandas DataFrame。年份在过去发生了变化,因此我必须为该列的每个元素添加恒定的年份。
我发现的最好方法是遍历所有记录并使用
x.replace(year=x.year + years) # x = current element, years = years to add
它如下所示,但仍然很慢(打样)
cdef list _addYearsToTimestamps(list elts, int years):
cdef cpdatetime x
cdef int i
for (i, x) in enumerate(elts):
try:
elts[i] = x.replace(year=x.year + years)
except Exception as e:
logError(None, "Cannot replace year of %s - leaving value as this: %s" % (str(x), repr(e)))
return elts
def fixYear(data):
data.loc[:, 'timestamp'] = _addYearsToTimestamps(list(data.loc[:, 'timestamp']), REAL_YEAR-(list(data[-1:]['timestamp'])[0].year))
return data
我很确定有一种方法可以通过使用 Pandas 的时间戳功能来更改年份而无需迭代。不幸的是,我不知道怎么做。有人可以详细说明吗?