python - 通过从组数据集中旋转数组来计算持续时间
问题描述
我希望你能帮我解决这个问题。我想使用 python 计算持续时间。
数据看起来像这样
group_id, id, departure_time, arrival_time
1,1,61200,61800
1,2,18000,18600
2,1,32400,34200
2,2,64800,66600
2,3,77400,81000
我想得到的结果
group_id,id,departure_time, arrival time, departure_rotate, duration
1,1,61200,61800, 18000, 43800
1,2,18000,18600,61200,43800
2,1,32400,34200,77400,43200
2,2,64800,66600,64800, 1800
2,3,77400,81000,32400,48600
实际上,持续时间 = 到达时间 - 出发时间。但是,应添加减号结果 (24*3600)。提前致谢。到目前为止,我尝试了这个,但没有给出预期的结果。所以我认为我问的方式会有所帮助。
df_duration = pd.DataFrame(df_trips[[
"group_id", "id", "arrival_time"
]], copy = True)
df_following = pd.DataFrame(df_trips[[
"group_id", "id", "departure_time"
]], copy = True)
df_following.columns = ["group_id", "id", "following_trip_departure_time"]
df_following["trip_id"] = df_following["id"] - 1
df_duration = pd.merge(df_duration, df_following, on = ["group_id", "id"])
解决方案
假设给定的数据框df
为:
# df
group_id id departure_time arrival_time
0 1 1 61200 61800
1 1 2 18000 18600
2 2 1 32400 34200
3 2 2 64800 66600
4 2 3 77400 81000
要计算departure_rotate
,您可以使用对列上df.groupby
的数据框进行分组,然后应用于反转给定组的列。df
group_id
transform
departure_time
departure_time
要计算duration
,您可以减去arrival_time
anddeparture_rotate
列以得到diff
,然后根据大于或不使用np.where
将新值分配给列。duration
diff
0
利用:
import numpy as np
df['departure_rotate'] = (
df.groupby('group_id')['departure_time'].transform(lambda s: s[::-1]))
diff = df['arrival_time'].sub(df['departure_rotate'])
df['duration'] = np.where(diff > 0, diff, diff.add(24*3600))
结果:
# print(df)
group_id id departure_time arrival_time departure_rotate duration
0 1 1 61200 61800 18000 43800
1 1 2 18000 18600 61200 43800
2 2 1 32400 34200 77400 43200
3 2 2 64800 66600 64800 1800
4 2 3 77400 81000 32400 48600
推荐阅读
- javascript - 如何清理 JSON 中的对象键以转换为 XML
- amazon-s3 - S3 以低音量增加延迟
- geotools - 需要帮助从裁剪的 geotiff 渲染 JMapFrame
- reactjs - TypeError:无法读取未定义的属性“标题”(盖茨比错误)
- javascript - 将日期添加到多个时区的时钟
- java - 无法将字符串转换为 json 对象
- python-3.x - 如何在最少使用 for 循环的情况下优化以下代码?
- spring-batch - 重现特定 JobInstance 存在多个 JobExecutions 的场景
- javascript - 函数中出现“变量未定义”错误的问题
- javascript - 倒计时并替换错误答案