我有两个大数据框(以下只是摘录),其中包含有关道路事故的信息,其中df_veh
包含有关车辆的详细信息df_ped
包含每个事故中涉及的行人计数veh_type
显示事故中涉及的车辆类型(1=自行车,2=汽车,3=公共汽车)。它们与acc_index
相关,表示独特的事故
veh_data = {'acc_index': ['001', '002', '002', '003', '003', '004', '005', '005', '006',
'006', '007', '007', '008', '008', '008', '009', '009', '009'],
'veh_type': ['1', '1', '2', '1', '1', '1', '2', '2', '2', '3', '1', '2', '1', '1',
'1', '1', '2', '2'] }
df_veh = pd.DataFrame (veh_data, columns = ['acc_index', 'veh_type'])
ped_data = {'acc_index': ['001', '002', '003', '004', '005', '006', '007', '008', '009'],
'pedestrians': ['1', '2', '0', '1', '4', '3', '0', '1', '2'] }
df_ped = pd.DataFrame (ped_data, columns = ['acc_index', 'pedestrians'])
我想做的是计算事故数量(按唯一性acc_index
只计算一次):
veh_type==1
和veh_type==2
)veh_type==1
和pedestrians>=1
)veh_type==2
和pedestrians>=1
)veh_type==2
对于相同的acc\U指数)veh_type==1
对于相同的ACCU指数)pedestrians>=1
对于相同的ACCU指数)我试着用不同的方法去做,但最终,我得到了不同的结果,所以我感到困惑。例如,我试着这样计算自行车行人事故:
df_bikes = df_veh[df_veh['veh_type']==1].groupby('acc_index').sum().reset_index()
bike_ped = pd.merge(df_bikes, df_ped, how='outer', on='acc_index')
bike_ped[(bike_ped['veh_type']==1) & (bike_ped['pedestrians']>=1)].groupby(
'acc_index').sum().reset_index()[['acc_index', 'veh_type', 'pedestrians']]
另一个例子,这是我如何计算汽车和自行车之间的事故,这要感谢this post中的评论。我相信这一点至少是正确的。我正试图找到最简单的方法来实现这一点(但也显示已计数的行)
bike_car = df_veh[def_veh.groupby('acc_index')['veh_type'].
transform(lambda g: not({1, 2} - {*g}))][['acc_index', 'veh_type']]
len(bike_car.groupby(['acc_index']).size().reset_index()))
考虑将车辆数据与^ {CD1>}连接,并与行人的^ {< CD2>}聚集,然后运行所需的^ {< CD3>}调用,其中每行是不同的^ {< CD4>}:
询问
相关问题 更多 >
编程相关推荐