データのある行と他の行を比較するためにdouble forループを使用してデータをループする必要があります。そして、私はこの行ごとにこれを行う必要があります。double forループの使用を避けることはできますか?
残念ながら私の実際のデータは何百万行にものぼり、ループの処理には時間がかかります。
double forループを使用しないようにする方法はありますか?私は類似したもののDate1とdate2を比較することだけに興味があるので、私はグループ化することができ、それぞれのグループに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