Python 如何计算成本时间

Python 如何计算成本时间,python,pandas,dataframe,Python,Pandas,Dataframe,上面是我的txt文件中的数据。它包含股票交易的订单信息 我想计算每个唯一订单id的“创建时间”列的时间差。如何使用熊猫来计算时间差 例如,order_id 3941有三个条目。从第一个条目到第二个条目的创建时间差为2分钟,从第二个条目到第三个条目的创建时间差为1分钟 最终输出如下所示: id|order_id|order_no|order_status|remark|handle_time|create_time|update_time 11237|3942|201805030754280000

上面是我的txt文件中的数据。它包含股票交易的订单信息

我想计算每个唯一订单id的“创建时间”列的时间差。如何使用熊猫来计算时间差

例如,order_id 3941有三个条目。从第一个条目到第二个条目的创建时间差为2分钟,从第二个条目到第三个条目的创建时间差为1分钟

最终输出如下所示:

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

对不起,我的英语很差。

我想我理解你的要求。您只想拥有一个新的数据帧,用于计算每个唯一订单id的三个不同条目之间的时间差

因此,我首先创建dataframe:

order_id,stage1_time,stage2_time,...
3941,2,1,...
first_df = df.groupby('order_id').nth(0)
second_df = df.groupby('order_id').nth(1)
third_df = df.groupby('order_id').nth(2)
按顺序\u id排序值,然后创建\u时间:

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'])
从第二级减去第1级得到第一级,从第三级减去第2级得到第二级。然后将它们组合成一个输出数据帧:

order_id,stage1_time,stage2_time,...
3941,2,1,...
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)

我猜你因为问题和文字不清楚而被否决了。从这个问题来看,创作时间、舞台和“从”到“时间”之间似乎没有关系。另外,如果你把预期的结果包括进来,那就更好了。我已经更新了我的问题,谢谢。你为什么不替换中文呢?order_状态的字符串与等效的英文字符串,是否再次更新问题?这将有助于成员向您提出一些解决方案。