2016-10-18 101 views
0

我有以下公式來檢查(感謝您幫助我在this!)。Python函數:變量和字符串

queries = ['dog','cat','hamster'] 

    def get_trends(queries): 
     return pd.concat([pytrend.trend({'q': x, 'date': '01/2015 12m'}, return_type='dataframe') 
    for x in queries], axis=1) 

get_trends(queries) 

此功能觸發列表中的每個項目一個谷歌趨勢的查詢,並把彼此相鄰返回dataframes。我現在需要做的是完全相同,但每個查詢中都有一個靜態變量(pet)。

例如,如果沒有公式查詢將

return pytrend.trend({'q': 'pet, dog', 'date': '01/2015 12m'}, return_type='dataframe') 

我知道我可以嘗試

queries = ['pet, dog','pet, cat','pet, hamster'] 

但也許有一個更優雅的方式?

我試圖

static =['pet'] 
return pytrend.trend({'q': ''' + static + x + ''', 'date': '01/2015 12m'}, return_type='dataframe') 

,但沒有成功這一點。

+0

也許你可以使用'format'?第一個代碼塊中的x是什麼? –

+0

見上面,我更新了代碼。 – RPacker

+0

哦,好的。你可以這樣做:'返回pd.concat([pytrend.trend({'q':static + x,'date':'01/2015 12m'},return_type ='dataframe') for x in queries],axis = 1)' –

回答

0

你可以這樣來做:

In [54]: %paste 
static = 'animals' 
animals = ['dog','cat','hamster'] 
queries = ['{}, {}'.format(static, x) for x in animals] 
## -- End pasted text -- 

In [55]: queries 
Out[55]: ['animals, dog', 'animals, cat', 'animals, hamster'] 

現在你可以通過queries給你的函數:

get_trends(queries) 
+0

這是我的理解,OP不想在每個元素的開頭添加「pet」。不知道這是OP的意思,但如果不是,這是解決方案。 –

+0

這工作得很好。只有最後一個問題:如何防止在連接數據框時各列按字母順序排列。因爲:貓狗倉鼠狗是df的樣子。 – RPacker