我必須使用double for循環來遍歷數據以將一行數據與其他行進行比較。我必須爲每一行都做到這一點。是否可以避免使用double for循環
不幸的是,我的真實數據是數百萬行,循環處理需要很長時間。
有沒有辦法避免使用double for循環?因爲我只是比較Date1和date2的相似事情 - 我想我可以groupby Thing並將double for循環應用於每個組?
但我不知道如何寫這個,因爲有一個併發症與len(分組)。還有很多行'Quantity'= 0的行,所以這些行不需要包含在計算中。在此先感謝您的幫助。
d={'Thing':['Thing1','Thing2','Thing1','Thing2','Thing5'],'Date1' :
['01-01-2016','02-02-2015','03-03-2015','03-03-2015', '24-03-2016'], 'Date2' : ['04-04-2015','03-03-2014','05-04-2015','07-03-2015','03-04-2016'],
'Quantity':[1,1,1,1,0]}
data=pd.DataFrame(d)
data['Level']=0
for i in range(0,len(data)):
for j in range(i+1,len(data)):
if data['Thing'][i] == data['Thing'][j] and data['Date1'][i] >= data['Date1'][j]
and data['Date1'][i] < data['Date2'][j] and data['Quantity']==1:
data['Level'][i]=data['Level'][i]+1
data['Level'][j]=data['Level'][j]+1
是什麼你試圖做?什麼是代碼應該比較或更新或?.. – ForceBru
經驗法則:如果你發現自己使用熊貓的for循環,你很可能做錯了什麼。 – DeepSpace
首先,永遠不要在熊貓中使用正常的'for'循環,總是使用內置的迭代器,例如, 'iterrows'並用'loc'或'iloc'爲你的行索引。 – Khris