Я бы использовал другой подход, чем элегантное решение, предлагаемое акроном. Я знаю, как использовать этот метод для создания столбца MaxTime, который вы показываете на своем изображении.
#This will split your df into a list of data frames for each gill.
list.df <- split(df1, df1$Gill)
Затем вы можете использовать lapply, чтобы найти максимальное время для каждого Gill, а затем сделать это значение новым столбец MaxTime.
lapply(list.df, function(x) mutate(x, MaxTime = max(x$Time[x$Diametre != 0])))
Затем вы можете объединить эти разделенные данные с помощью bind_rows ()
df1 = bind_rows(list.df)
Прежде всего, есть несколько проблем с вашей диаграммой:
Поскольку вы реализуете его в Python, кратности можно упростить.
0..1
означает, что у вас есть простая переменная, которая может принимать None
или значение (в Python проверка типов отсутствует). 1
означает, что это не должно быть None
. *
или n..m
означает, что у вас есть массив (просто инициализируйте его с помощью []
).