Я пытаюсь обновить записи в столбцах, подсчитывая частоту записей в разных столбцах. Вот образец моих данных. Фактические данные состоят из 10 тыс. Выборок, каждая из которых имеет длину 220 (220 секунд).
d = {'ID':['a12', 'a12','a12','a12','a12', 'a12', 'a12','a12','v55','v55','v55','v55','v55','v55','v55', 'v55'],
'Exp_A':[0.012,0.154,0.257,0.665,1.072,1.514,1.871,2.144, 0.467, 0.812,1.59,2.151,2.68,3.013,3.514,4.015],
'freq':['00:00:00', '00:00:01', '00:00:02', '00:00:03', '00:00:04',
'00:00:05', '00:00:06', '00:00:07','00:00:00', '00:00:01', '00:00:02', '00:00:03', '00:00:04',
'00:00:05', '00:00:06', '00:00:07'],
'A_Bullseye':[0,0,0,0,1,0,1,0, 0,0,1,0,0,0,1,0], 'A_Bull_Total':[0,0,0,0,0,1,1,2,0,0,0,1,1,1,1,2], 'A_Shot':[0,1,1,1,0,1,0,0, 1,1,0,1,0,1,0,0]}
df = pd.DataFrame(data=d)
В каждую секунду может быть зарегистрирован только яблочко или выстрел.
Количество 1: число df.A_Shot == 1
перед первым df.A_Bullseye == 1
для каждого ID
равно 3 & 2 for ID=a12 and ID=v55 resp
.
Count2: число df.A_Shot == 1
от конца счета1 до второго df.A_Bullseye == 1
, 1
для df[df.ID=='a12']
и 2 for df[df.ID=='v55']
Где i
в count(i)
равно df.groupby(by='ID')[A_Bull_Total].max()
. Здесь i
равно 2
.
Итак, если я смогу вычислить среднее число для каждого i, тогда я смогу скорректировать значения df.Exp_A, используя среднее из вышеупомянутых значений.
mask_A_Shot= df.A_Shot == 1
mask_A_Bullseye= df.A_Bulleseye == 0
mask = mask_A_Shot & mask_A_Bulleseye
df[mask.groupby(df['ID'])].mean()
В идеале я хотел бы иметь что-то подобное для каждого я (яблочка), сколько снимков нужно и сколько секунд это заняло.