"" "У меня есть фрейм данных из миллиона строк, которые я сделал .groupby()
.
- Я хотел бы получить строки, содержащие наибольшее значение n для каждой комбинации идентификатора и ткани .
- Кроме того, мне нужно сгенерировать еще один df, содержащий среднее значение для каждой комбинации идентификатора и ткани. Хотя я использую мощный сервер Linux, процесс выполняется более 24 часов. Поэтому , Я ищу более эффективную стратегию. Я трачу часы на stackoverflow, но не смог применить решения к моей конкретной проблеме. Заранее спасибо за помощь.
"" "
df = pd.DataFrame({'id': ['g1','g1','g1','g1','g2','g2','g2','g2','g2','g2'],\
'Trans':['g1.1','g1.2','g1.3','g1.4','g2.1','g2.2','g2.3','g2.2','g2.1','g2.1'],\
'Tissue': ['Lf','Lf','Lf','pc','Pol','Pol','Pol','Ant','Ant','m2'],\
'val': [0.0948,1.5749,1.8904,0.8673,2.1089,2.5058,4.5722,0.7626,3.1381,2.723]})
print('df')
df_highest = pd.DataFrame(columns=df.columns)#brand new df that will contain the rows of interest
for grpID,data in df.groupby(['id','Tissue']):
highest = data.nlargest(1,'val')
df_highest.append(highest)
df_highest.to_csv('out.txt',sep='\t',index=False)