我想不出另一種方法來優化我的代碼。我使用了一個嵌套for循環,我的電腦崩潰。所以我認爲這個問題是我的代碼。我想要一些幫助。提高Python中循環的性能
我需要檢查一個字符串列表(基本上是單詞)是否在我的df列的行中。它需要經過每一行並檢查單詞是否在那裏。我認爲這不會那麼困難。那麼我是非常錯誤的。我導入了excel文件。總共有3個。
filename='XXXX'
df = pd.read_excel(filename, sheetname='Data',index_col=0)`
df.columns:[['text', 'date', 'books', 'price']]
list_1 = ['apple', 'orange' , 'lime', 'pear']
list_2 = ['#loveapple', '#hateorange', '#likepear']
a = []
for word in df.text:
for fruit in list_1:
for tag in list_2:
if fruit in word:
fruit_list =fruit,word
elif tag in word:
tag_list = tag, word
all_data = [fruit_list,tag_list]
a.append(all_data)
TypeError: 'in ' requires string as left operand, not numpy.int64
(我跑過去,但現在它說類型錯誤)
我一直在閱讀一些職位,但我無法找到你消磨整個名單的情況下, 。我找到的例子只顯示一個字符串,它不能用於列表。我也試過其他工具,如xxx.str.contains
,但它沒有奏效。
我把word
兩次,所以我可以合併word
上的2個表。但是,它迭代的行數超過35k,因此根本無法工作。我需要首先「過濾」數據,以便稍後進行分析。
在此先感謝。
要清楚:是list_2的字符串列表?如果是這樣,它應該被初始化爲list_2 = ['#loveapple','#hateorange','#likepear'] – Robbie
上面的第三行包含以散列(#)開頭的無效變量。你不能這樣做!如果這些是字符串,應該引用它們。你會得到什麼錯誤?另外,列表中沒有'ppend'方法! – polarise
@robbie是的,我只是將它們導入爲字符串。抱歉!應該像你所說的那樣引用。 – MLPy