#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
, чтобы ускорить циклы за счет параллельного выполнения