IIUC вам нужно что-то вроде ниже:
df1 = df.groupby(['Season','Team'])['Position'].apply(lambda x : np.select([(x.iloc[-1]==1),(x.iloc[-1]==2),(x.iloc[-1]==3)],['Champion','Second','Third'])).reset_index().rename(columns={'Position':'Status'})
print(df.merge(df1,on=['Team','Season']))
Season Team GW Position Position_Change Status
0 1314 A 1 1 0.0 Second
1 1314 A 2 3 2.0 Second
2 1314 A 3 2 -1.0 Second
3 1314 B 1 2 0.0 Third
4 1314 B 2 1 -1.0 Third
5 1314 B 3 3 2.0 Third
6 1314 C 1 3 0.0 Champion
7 1314 C 2 2 -1.0 Champion
8 1314 C 3 1 -1.0 Champion
9 1415 A 1 2 0.0 Third
10 1415 A 2 2 0.0 Third
11 1415 A 3 3 1.0 Third
12 1415 B 1 1 0.0 Second
13 1415 B 2 1 0.0 Second
14 1415 B 3 2 1.0 Second
15 1415 C 1 3 0.0 Champion
16 1415 C 2 3 0.0 Champion
17 1415 C 3 1 -2.0 Champion
На основе чата замените код для df1 в исходном коде на:
df1 = df.groupby(['Season','Team'])['Position'].apply(lambda x : np.select([(x.iloc[-1]==1),(2<=x.iloc[-1]<=4),(5<=x.iloc[-1]<=6),(7<=x.iloc[-1]<=17),(x.iloc[-1] > 17)],['Champion','UCL','UEL','Other','Relegation'])).reset_index().rename(columns={'Position':'Status'})
Можно использовать Систему. Среда. Выход (yourExitCode).
установите свойство ExitCode в Системе. Класс среды и при выходе. например.
System.Environment.ExitCode = 1
Application.Exit()
Добавьте свойство ExitCode (или что-то подобное) к Вашему классу формы:
class MyForm : Form {
public int ExitCode { get; set; }
void ShutDownWithError(int code) {
ExitCode = code;
Close();
}
}
Где-нибудь в Вашем коде Вы имеете:
static void Main() {
// ...
MyForm form = new MyForm();
Application.Run(myForm);
}
Изменение, что в:
static void Main() {
// ...
MyForm myForm = new MyForm();
Application.Run(myForm);
Environment.Exit(myForm.ExitCode);
}
Когда метод ShutdownWithError назовут на Вашей форме, Вы Закроете основную форму. Это выпрыгнет из цикла, запущенного с Приложения. Выполненный. Затем Вы просто выбираете код выхода и уничтожаете процесс со Средой. Выход.