2015-08-21 98 views
0

我在我的csv文件中有一個名爲'sport'的列,其中包含不同的體育名稱。我試圖給他們分配一個流行度。但是,當我輸入以下內容(我正在使用Python)時,我得到了前進錯誤。SyntaxError:在python中使用.tolist()函數的語法無效,同時爲列分配值

Sports_Popularity_Score = [9 if sport=='football' else 7 if sport=='hockey' 
else 6 if sport=='basketball' else 5 if sport=='baseball' else 4 if sport=='tennis' else 3 if sport=='gymnastics' else 2 if sport=='olympics' else 1 for sport df['sport'].tolist()] 

錯誤消息: 文件 「sport_popularity.py」,行74

Sports_Popularity_Score = [9 if sport=='football' else 7 if sport=='hockey' 
else 6 if sport=='basketball' else 5 if sport=='baseball' else 4 if sport=='tennis' else 3 if sport=='gymnastics' else 2 if sport=='olympics' else 1 for sport df['sport'].tolist()] 

^ 

SyntaxError: invalid syntax 

是不是有什麼毛病我格式化我的DF節的方式?列的名稱是運動,每個單元格中的值是一個字符串:足球,曲棍球等。感謝您的幫助!

+1

不要使用嵌套三元這樣。 –

+0

你在做什麼值,我想你正在使用熊貓,所以最有可能是一個更好的方式來做你想做的事 –

+0

神祕upvoter:這個問題「有用和清晰」是什麼方式?它如何展示研究成果?對於該網站的未來訪問者來說,它有什麼用處? –

回答

0

你缺少一個in

for sport in df['sport'].tolist() 
     ^

我也建議了不同的方法,錯誤是很難發現的代碼不是很可讀。

+0

謝謝。那解決了它。下次我會更清楚地發佈代碼。 – vuxxx036

+0

@ vuxxx036,不用擔心,需要一段時間才能習慣格式化 –

1

你「中的」

也不翼而飛,這是你應該有一個字典做這樣的事情:

popularities = {'football': 9, 'hockey': 7, <etc...>} 
sports_popularity_score = [popularities[sport] for sport in df['sport'].tolist()] 
+0

而不是'popularities [sport]',我會做'popularities.get(sport,1)'。請注意原文中的「else」,這意味着給定的「運動」可能不在字典中,並且不在列表中的任何運動的默認流行度爲1. – TigerhawkT3

+0

謝謝。那解決了它。下次我會使用你的字典風格。 – vuxxx036

+0

@ vuxxx036 - 請注意,如果您嘗試傳遞不在字典中的運動,而不是簡單地將其分配給1,則此答案會產生錯誤。我上面的註釋修復了這一問題。 – TigerhawkT3