Pytrends索引器:单个位置索引器超出边界

2024-04-19 17:15:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的脚本,脚本的下面一行似乎在制造问题,但我不知道为什么

当我手动将日期插入函数而不是使用参数(例如,Now_RangeStart)时,一切正常,但当我将它们拉到参数中时,我得到了IndexError: single positional indexer is out-of-bounds错误

dt_all = pd.date_range(start=df_select['date'].iloc[0], end=df_select['date'].iloc[-1])

如有任何帮助/建议,将不胜感激

import pandas as pd                        
from pytrends.request import TrendReq
import pytrends
pytrend = TrendReq()
import plotly.express as px


geo = "US"
start_date_long = "2019-01-01" 
end_date = "2021-04-10"

kw1 = "budget" 
kw2 = "finance"
kw3 = "credit"
kw4 = "stocks"
kw5 = "invest"


import plotly.express as px

Now_RangeStart = "2021-02-01"
Now_RangeEnd = "2021-04-10"
Prior_RangeStart = "2020-02-01"
Prior_RangeEnd = "2020-04-10"

pytrend.build_payload(kw_list, timeframe='{} {}'.format(start_date_long,end_date), geo='{}'.format(geo))
df_select = pytrend.interest_over_time()
df_select = df_select.reset_index()


df_select = df_select.loc[((df_select['date'] <= ''.format(Now_RangeEnd)) & (df_select['date'] >= ''.format(Now_RangeStart)) | (df_select['date'] <= ''.format(Prior_RangeEnd)) & (df_select['date'] >=  ''.format(Prior_RangeStart)))]

# build complete timepline from start date to end date

dt_all = pd.date_range(start=df_select['date'].iloc[0], end=df_select['date'].iloc[-1])

# retrieve the dates that ARE in the original datse
dt_obs = [d.strftime("%Y-%m-%d") for d in pd.to_datetime(df_select['date'])]

# define dates with missing values
dt_breaks = [d for d in dt_all.strftime("%Y-%m-%d").tolist() if not d in dt_obs]

# make figure
fig = px.line(df_select.sort_values(by=['date'], ascending=[True]), x='date', y=['{}'.format(kw1), '{}'.format(kw2), '{}'.format(kw3), '{}'.format(kw4), '{}'.format(kw5)], color_discrete_map={'{}'.format(kw1): 'blue', '{}'.format(kw2): '#303030', '{}'.format(kw3): '#696969', '{}'.format(kw4): '#980000', '{}'.format(kw5): '#FF0000'})

# hide dates with no values
fig.update_xaxes(rangebreaks=[dict(values=dt_breaks)])

fig