Итак, я пытаюсь рассчитать возраст данного продукта, посмотрев дату его выпуска в кадре данных (дата выпуска - самая ранняя дата, в которую мы можем найти продукт) и вычтя его из текущей даты в dataframe. Тем не менее, поиск даты релиза занимает так много времени (2 часа к тому времени, когда я создаю эту тему).
Примечание. Датафрейм содержит более 300 тыс. Строк.
Я использую метод .loc в пандах, который, кажется, является источником проблемы.
#Age Calculation
def item_age(release,current):
age = (current - release) / timedelta(days=365.2425)
age="%.3f" % age
return age
#Get the release date of a given item
def getItem_releaseDate(sales_data,index):
date=sales.loc[(sales.item_id==index),'date']
release=[]
for i in date:
release.append(datetime.datetime.strptime(i,'%d.%m.%Y'))
mini=min(release)
return mini
#Appending age to item
def getItem_age(sales_data):
sales=sales_data
sales['age']=0
for index,row in sales.iterrows():
current=datetime.datetime.strptime(row['date'],'%d.%m.%Y')
release=getItem_releaseDate(sales_data,row["item_id"])
row["age"]=item_age(release,current)
return sales