【发布时间】:2021-09-18 10:04:12
【问题描述】:
我有兴趣确定数据集中何时发生不同的旅行。有两种锁定状态,其中 lock 表示车辆处于静止状态,unlocked 表示车辆正在使用中。
由于同一车辆可能被同一用户多次使用,我首先通过 ID 和 按时间排序的时间日期列隔离车辆和唯一用户,我可以看到车辆的使用时间用过的。为了识别同一用户乘坐同一辆车的不同行程,我想通过我的 lock_state 变量进行识别。
我一直在努力寻找如何做到这一点,渗透是我遇到的,但它似乎太复杂而无法理解和实施。我想知道是否有更简单的方法来实现这一点。
我的最终目标是确定行程次数(在本例中应为 2),将它们与用户 ID 和开始/结束日期时间一起添加到新的 df 中(假设所有这些都是随机列)并给出它们是唯一的 ID。所以最终的输出应该是这样的(随机编造的例子):
trip_id star_time end_time user_id
jk3b4334kjh x x 093723
nbnmvn829nk x x 234380
假设以下示例数据按时间顺序排列,我如何通过变量 state 识别不同的行程? (应该有 2 次行程被标识为阵列处于连续“解锁”状态两次,然后被“锁定”状态中断)。
lock_state = ["locked", "unlocked", "unlocked", "unlocked", "locked", "locked", "unlocked", "unlocked"]
# should be 2 trips
random_values = random.sample(range(2,20), 8)
df = pd.DataFrame(
{'state': lock_state,
'random': random_values
})
df
>>
state random
0 locked 5
1 unlocked 12
2 unlocked 17
3 unlocked 13
4 locked 18
5 locked 6
6 unlocked 4
7 unlocked 9
【问题讨论】:
-
显然,您可以遍历行,观察状态变化,并在转换时记录信息。您在寻找更自动化的东西吗?
标签: python pandas filtering grouping intervals