Я вчера отправил этот вопрос о создании нового столбца в df. Теперь мне интересно, как создать новый фрейм данных, который содержит только крайние элементы. Например:
df = pd.DataFrame({'Event':['A','A','A','A', 'A' ,'B','B','B','B','B'], 'Number':[1,2,3,4,5,6,7,8,9,10],'Ref':[False,False,False,False,True,False,False,False,True,False]})
df["new"] = df.Number - df.Number[df.groupby('Event')['Ref'].transform('idxmax')].reset_index(drop=True)
print(df)
Это дает df в таблице 1. Теперь мне любопытно, как я мог бы создать новый df1, который является просто строками, соответствующими наибольшему абсолютному значению new. Выход будет ниже Output2. Я знаю, что могу использовать что-то вроде df1 = df.loc([df['new'].idxmin())
, но это дает только строки. Я не уверен, как проходить через разные группы, а также как применять функцию numpy. Я считаю, что это один вкладыш, но я не слишком уверен, как подойти к
Выход 1:
Event Number Ref new
0 A 1 False -4
1 A 2 False -3
2 A 3 False -2
3 A 4 False -1
4 A 5 True 0
5 B 6 False -3
6 B 7 False -2
7 B 8 False -1
8 B 9 True 0
9 B 10 False 1
Выход 2:
Event Number Ref new
0 A 1 False -4
1 B 6 False -3