【发布时间】:2021-02-16 15:18:57
【问题描述】:
我有一个包含包裹 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
我正在尝试使用 groupby 函数,然后应用条件....没有任何成功
table['number_of_parcels']= table.groupby(['type']).cond.apply(lambda g: (g>=table['departure`_time'] & g<table['arrival_time'])).count()
有人知道如何破解吗?
非常感谢
【问题讨论】:
-
你好 Michael,对于 id_1,我有 4 行满足条件:id_1, id_4, id_5, id_8 因为他们的出发时间分别是 07:00, 07:10, 07:15, 07:14其中 >= 07:00 和
-
对于id_2,满足条件的行是id_2、id_3、id_6、id_9。我忘了提,我希望只考虑类似类型的包裹(我在最初的问题中更新它)。我能澄清我的要求吗?
-
是的,你是对的,对不起
标签: python conditional-statements pandas-groupby counting