如何计算成本时间

2024-06-16 14:35:31 发布

您现在位置:Python中文网/ 问答频道 /正文

id|order_id|order_no|order_status|remark|handle_time|create_time|update_time
11237|3942|2018050307542800005985|新建订单||20180503075428|2018/5/3 07:54:28|2018/5/3 07:54:28
11238|3943|2018050307591600005986|新建订单||20180503075916|2018/5/3 07:59:16|2018/5/3 07:59:16
11239|3943|2018050307591600005986|新建订单||20180503082115|2018/5/3 08:21:15|2018/5/3 08:21:15
11240|3943|2018050307591600005986|新建订单||20180503083204|2018/5/3 08:32:04|2018/5/3 08:32:04
11241|3941|2018050308564400005991|新建订单||20180503085644|2018/5/3 08:56:02|2018/5/3 08:56:44
11242|3941|2018050222320800001084|初审成功||20180503085802|2018/5/3 08:58:02|2018/5/3 08:58:02
11243|3941|2018050222320800001084|审核成功||20180503085821|2018/5/3 08:59:21|2018/5/3 08:58:21
11244|3945|2018050309152000005993|新建订单||20180503091520|2018/5/3 09:15:21|2018/5/3 09:15:21

以上是我的txt文件中的数据。它包含股票交易的订单信息。你知道吗

我要计算每个唯一订单id的“创建时间”列的时间差。如何使用熊猫?你知道吗

例如订单号3941,有三个条目。从第一个条目到第二个条目的创建时间相差2分钟,从第二个条目到第三个条目的创建时间相差1分钟。你知道吗

最终输出如下所示:

order_id,stage1_time,stage2_time,...
3941,2,1,...

对不起,我的英语不好。你知道吗


Tags: 文件no订单目的txtidtimestatus
1条回答
网友
1楼 · 发布于 2024-06-16 14:35:31

我想我明白你的意思。您只想有一个新的数据帧,它计算每个唯一订单id的三个不同条目之间的时间差?你知道吗

因此,我首先创建数据帧:

data = [
    [11238,3943,201805030759165986,'新建订单',20180503075916,'2018/5/3 07:59:16','2018/5/3 07:59:16'],
    [11239,3943,201805030759165986,'新建订单',20180503082115,'2018/5/3 08:21:15','2018/5/3 08:21:15'],
    [11240,3943,201805030759165986,'新建订单',20180503083204,'2018/5/3 08:32:04','2018/5/3 08:32:04'],
    [11241,3941,201805030856445991,'新建订单',20180503085644,'2018/5/3 08:56:02','2018/5/3 08:56:44'],
    [11242,3941,201805022232081084,'初审成功',20180503085802,'2018/5/3 08:58:02','2018/5/3 08:58:02'],
    [11243,3941,201805022232081084,'审核成功',20180503085821,'2018/5/3 08:59:21','2018/5/3 08:58:21']
]

df = pd.DataFrame(data, columns=['id','order_id','order_no','order_status','handle_time','create_time','update_time'])
df.loc[:, 'create_time'] = pd.to_datetime(df.loc[:, 'create_time'])

按订单id对值排序,然后创建时间:

df = df.sort_values(by=['order_id', 'create_time'])

接下来,我按订单id分组并选择第一、第二和第三个条目:

first_df = df.groupby('order_id').nth(0)
second_df = df.groupby('order_id').nth(1)
third_df = df.groupby('order_id').nth(2)

第二级减去第一级得到第一级,第三级减去第二级得到第二级。然后将它们组合成一个输出数据帧:

stage_two = third_df.loc[:, 'create_time'] - second_df.loc[:, 'create_time']
stage_one = second_df.loc[:, 'create_time'] - first_df.loc[:, 'create_time']
stages = pd.concat([stage_one, stage_two], axis=1, keys=['stage_one', 'stage_two'])

print(stages)

输出结果如下:

     stage_one stage_two
order_id                    
3941      00:02:00  00:01:19
3943      00:21:59  00:10:49

相关问题 更多 >