Это мой фрейм данных.
acc_index veh_count veh_type
001 1 1
002 2 1
002 2 2
003 2 1
003 2 2
004 1 1
005 2 1
005 2 3
006 1 2
007 2 1
007 2 2
008 2 1
008 2 1
009 3 1
009 3 1
009 3 2
acc_index уникален для каждой аварии
veh_count показывает, сколько транспортных средств вовлечено в одну аварию
veh_type показывает тип транспортных средств, вовлеченных в аварию (1 = велосипед, 2 = автомобиль, 3 = автобус).
Что я хочу сделать, это подсчитать количество аварий между автомобилями и велосипедами (так, где veh_type = 1 и veh_type = 9 для того же acc_index ), даже если было задействовано больше автомобилей или велосипедов, я все равно хочу считать это одной аварией. Как я могу это сделать?
Я пытался сделать это с помощью приведенного ниже кода, но я получаю счет всех несчастных случаев, связанных с автомобилями или мотоциклами, и я хочу, чтобы только между ними .
df[(df['veh_count'] >=2) & (df.veh_type.isin(['1','2']))].groupby(['acc_index', 'veh_count', 'veh_type']).count()
Я хочу получить что-то подобное ниже, но также со всем фреймом данных, а не только с общей суммой.
acc_index veh_count veh_type count
002 2 1
002 2 2
count 1
003 2 1
003 2 2
count 1
007 2 1
007 2 2
count 1
009 3 1
009 3 1
009 3 2
count 1
total_count 4
Если у вас есть лучшее решение / идея Я был бы признателен.