【问题标题】:Concatenated string and python dataframe generated string not matching连接字符串和python数据框生成的字符串不匹配
【发布时间】:2020-04-28 15:06:06
【问题描述】:

我正在尝试从数据框构建一个字符串,然后我将使用 pytrends 将其提交到 Google 趋势。

字符串的构造似乎工作正常,但是当我将它传递到 pytrends 时,它被拒绝并显示“ResponseError:请求失败:Google 返回了代码为 400 的响应。”错误。

如果我手动构造等效字符串,它可以正常工作。

所以,问题在于数据框生成的字符串...除了当我打印手动构造的和数据框生成的字符串时,它们看起来相同...但是当我使用 == 进行比较时,它说它们不是相同的。

这是打印字符串和比较的输出:

['hotels Tokyo', 'hotels Yerevan', 'hotels Niamey', 'hotels Tegucigalpa', 'hotels Ashgabat']

['hotels Tokyo', 'hotels Yerevan', 'hotels Niamey', 'hotels Tegucigalpa', 'hotels Ashgabat']

错误

这是设置为仅使用上述最后一行数据查询 GTrends 的代码:

import pandas as pd
from pytrends.request import TrendReq
language = 'en-US'
pytrend = TrendReq(hl=language,tz=360,retries=10, backoff_factor=0.5)

gtrends_list_df = pd.read_csv('/app/jupyter_checkpoints/phil2/gt_full_splitty_sq_list2.csv')

for row in gtrends_list_df.itertuples(index=False):
    gtrends_kw_list = "['" + row[0] + "', '" + row[1] + "', '" + row[2] + "', '" + row[3] + "', '" + row[4] +"']" 
    ;


kw_list = ['hotels Tokyo', 'hotels Yerevan', 'hotels Niamey', 'hotels Tegucigalpa', 'hotels Ashgabat']
cat = 0
geo = ''
timeframe = '2019-02-01 2020-04-29'

print(kw_list)
print(gtrends_kw_list)
print(kw_list == gtrends_kw_list)

pytrend.build_payload(gtrends_kw_list, cat=cat, timeframe=timeframe, geo=geo, gprop='' )

int_over_time_df = pytrend.interest_over_time()
int_over_time_df

【问题讨论】:

    标签: python-3.x string dataframe


    【解决方案1】:

    原来是类型错误。当它需要一个列表时,我正在将一个字符串传递给函数。打印出来时,它们看起来相同,但数据类型不同。

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 2017-10-25
      • 2022-01-07
      • 2015-10-11
      • 2017-08-31
      • 2017-01-28
      • 2013-08-29
      • 2010-12-30
      • 1970-01-01
      相关资源
      最近更新 更多