Python 蟒蛇熊猫-Groupby+;单元格值的条件计数

Python 蟒蛇熊猫-Groupby+;单元格值的条件计数,python,conditional-statements,pandas-groupby,counting,Python,Conditional Statements,Pandas Groupby,Counting,我有一个表格,其中包含包裹ID列表、出发时间、到达时间和包裹类型 下面给出了一个最低限度的工作示例来说明该表 对于每一条线路,我试图获得类似类型(即电视或PC)的包裹数量,其出发时间优于或等于[所考虑线路的出发时间],且严格低于[所考虑线路的到达时间] 输入数据示例 Parcel_id, departure_time, arrival_time, type id_1, 07:00, 07:30, TV id_2, 07:00, 07:15, PC id_3, 07:05, 07:22, PC i

我有一个表格,其中包含包裹ID列表、出发时间、到达时间和包裹类型

下面给出了一个最低限度的工作示例来说明该表

对于每一条线路,我试图获得类似类型(即电视或PC)的包裹数量,其出发时间优于或等于[所考虑线路的出发时间],且严格低于[所考虑线路的到达时间]

输入数据示例

Parcel_id, departure_time, arrival_time, type
id_1, 07:00, 07:30, TV
id_2, 07:00, 07:15, PC
id_3, 07:05, 07:22, PC
id_4, 07:10, 07:45, TV
id_5, 07:15, 07:50, TV
id_6, 07:10, 07:26, PC
id_7, 07:40, 08:10, TV
id_8, 07:14, 07:46, TV
id_9, 07:14, 07:32, PC
id_10, 07:15, 07:30, PC
Parcel_id, departure_time, arrival_time, type, number_of_parcels
id_1, 07:00, 07:30, TV, 4
id_2, 07:00, 07:15, PC, 4
id_3, 07:05, 07:22, PC, 4
id_4, 07:10, 07:45, TV, 4
id_5, 07:15, 07:50, TV, 2
id_6, 07:10, 07:26, PC, 3
id_7, 07:40, 08:10, TV, 1
id_8, 07:14, 07:46, TV, 3
id_9, 07:14, 07:32, PC, 2
id_10, 07:15, 07:30, PC, 1
所需输出数据的示例

Parcel_id, departure_time, arrival_time, type
id_1, 07:00, 07:30, TV
id_2, 07:00, 07:15, PC
id_3, 07:05, 07:22, PC
id_4, 07:10, 07:45, TV
id_5, 07:15, 07:50, TV
id_6, 07:10, 07:26, PC
id_7, 07:40, 08:10, TV
id_8, 07:14, 07:46, TV
id_9, 07:14, 07:32, PC
id_10, 07:15, 07:30, PC
Parcel_id, departure_time, arrival_time, type, number_of_parcels
id_1, 07:00, 07:30, TV, 4
id_2, 07:00, 07:15, PC, 4
id_3, 07:05, 07:22, PC, 4
id_4, 07:10, 07:45, TV, 4
id_5, 07:15, 07:50, TV, 2
id_6, 07:10, 07:26, PC, 3
id_7, 07:40, 08:10, TV, 1
id_8, 07:14, 07:46, TV, 3
id_9, 07:14, 07:32, PC, 2
id_10, 07:15, 07:30, PC, 1
我试图使用groupby函数,然后应用条件……但没有成功

table['number_of_parcels']= table.groupby(['type']).cond.apply(lambda g: (g>=table['departure`_time'] & g<table['arrival_time'])).count()
table['number\u of\u parcels']=table.groupby(['type']).cond.apply(lambda g:(g>=table['deparation`\u time'])&g这是有效的

df['number_of_parcels'] = df.groupby('type').apply(lambda x: x.apply(lambda y:(
    (x['departure_time'] >= y['departure_time']) & (x['departure_time'] < y['arrival_time'])
    ).sum(), axis=1)).droplevel(level=0)
df

你好,米迦勒,对于IDA1,我有4行满足条件:IDE1,IDA4,IDA5,ID8,因为它们的出发时间分别是07:00,07:107:157:07:14,> > 07:00和IDA2,行会议条件是IDA2,ID3,IDA6,IDA9。我忘了提,我只想考虑类似类型的包裹(我在初始问题中更新它)。。我能澄清我的请求吗?是的,你是对的,很抱歉弄错了。非常感谢你的帮助和超级快速的帮助:)另外,我还发现了droplevel功能,我将阅读有关它的文档