不再支持对带有时间戳的整数和整数数组进行加法/减法运算.使用'n*obj.freq'而不是加减'n'



我正在使用pytrends库提取谷歌趋势,并收到以下错误:

不再支持对带有时间戳的整数和整数数组进行加法/减法运算。使用n * obj.freq而不是加/减n

timeframes = []
datelist = pd.date_range('2004-01-01', '2018-01-01', freq="AS")
date = datelist[0]
while date <= datelist[len(datelist)-1]:
start_date = date.strftime("%Y-%m-%d")
end_date = (date+4).strftime("%Y-%m-%d")
timeframes.append(start_date+' '+end_date)
date = date+3

你不能把日期和date+4这样的数字相加,因为谁知道这是哪个单位,4h4d


您可以使用datetime.timedelta,如果您指的是days,这里有一个示例

from datetime import timedelta
end_date = (date + timedelta(days=4)).strftime("%Y-%m-%d")
# ...
date = date + timedelta(days=3)

既然你已经使用了Pandas,为什么还要导入其他东西呢?你可以做:

import pandas as pd                                            # your code
date = pd.date_range('2004-01-01', '2018-01-01', freq="AS")    # your code
freq = 'D'                                                     # 'H' for hours, etc.
date = date + pd.Timedelta(3, unit=freq)                       # Perform the action
print(date)

输出(与azro的答案相同(:

DatetimeIndex(['2004-01-04', '2005-01-04', '2006-01-04', '2007-01-04',
'2008-01-04', '2009-01-04', '2010-01-04', '2011-01-04',
'2012-01-04', '2013-01-04', '2014-01-04', '2015-01-04',
'2016-01-04', '2017-01-04', '2018-01-04'],
dtype='datetime64[ns]', freq=None)

使用这种方法的另一个原因是,您可能会发现自己处于这样一种情况,即您正在向日期动态添加内容,例如在方法内部,并且您正在将单位作为参数传递。

如果您使用timedelta(days=3),您将无法更改任何其他内容(小时、分钟等(,只能更改天!

相关内容

最新更新