我用的是巨蟒的Pandas。
我有以下订单 Dataframe 。当每个订单有其订单ID,订单时间和订单中的不同项目ID。在这个例子中,我有三个不同的组- A,B,C:
order_id time item_id
0 A 2022-11-10 08:43:07 1
1 A 2022-11-10 08:43:07 2
2 A 2022-11-10 08:43:07 3
3 B 2022-11-10 08:46:27 1
4 B 2022-11-10 08:46:27 2
5 C 2022-11-10 08:58:45 3
我想按时间顺序计算A组和B组之间的时间差,然后计算B组和C组之间的时间差,并将结果保存到另一列中
预期结果:
order_id time item_id time_diff
0 A 2022-11-10 08:43:07 1
1 A 2022-11-10 08:43:07 2
2 A 2022-11-10 08:43:07 3
3 B 2022-11-10 08:46:27 1 0 days 00:03:20
4 B 2022-11-10 08:46:27 2 0 days 00:03:20
5 C 2022-11-10 08:58:45 3 0 days 00:12:18
当整个组的时间相似时,我如何计算组之间的时间差?
尝试使用.diff(),但我只得到了组内的差异:
df['time_diff'] = df.groupby('order_id')['time'].diff()
df
Out[141]:
order_id time item_id time_diff
0 A 2022-11-10 08:43:07 1 NaT
1 A 2022-11-10 08:43:07 2 0 days
2 A 2022-11-10 08:43:07 3 0 days
3 B 2022-11-10 08:46:27 1 NaT
4 B 2022-11-10 08:46:27 2 0 days
5 C 2022-11-10 08:58:45 3 NaT
我想要的是组之间的差异,而不是组内部的差异。我可以使用.last().diff()计算差异,但我不知道如何将其作为列保存回 Dataframe :
df.groupby('order_id')['time'].last().diff().to_frame('time_diff')
Out[]:
time_diff
order_id
A NaT
B 0 days 00:03:20
C 0 days 00:12:18
谢谢
1条答案
按热度按时间hgb9j2n61#
你走对了路。这对你有用: