Есть ли оптимальное решение для этого?

#python

#python

Вопрос:

У меня есть большие данные, которые содержат: идентификатор, год, программу. Я хочу отфильтровать идентификаторы, если конкретная программа, скажем, A, имеет большее значение года (пример: 2019> 2018), чем другая программа, скажем, B. У меня есть решение, но оно включает цикл. Я хочу знать, есть ли другой способ сделать это. Мой код :

 unique = list(set(finalAD['ID']))
IDFiltered = []
for i in unique:
    data = finalAD[finalAD['ID'] == i]
    AD1 = data[data['Program'].str.match('AD')]
    ind = list(AD1.index.values)
    AD2 = data.drop(ind)
    date1 = AD1['Year'].max()
    date2 = AD2['Year'].min()
    if(date2 > date1):
        IDFiltered.append(i)

newData = finalAD[finalAD['ID'].isin(IDFiltered)]
newData.reset_index(drop = True, inplace = True)
newData.head()

  

Комментарии:

1. pandas.pydata.org чрезвычайно хорош в такого рода вещах…

2. переход на pandas, как сказал Хиро, является хорошим решением и совместимым

3. или вы можете попробовать запустить с потоками из-за возврата вашего результата в список IDFiltered , чтобы ускорить циклы за счет параллельного выполнения