将一个日期列与另一个行中的另一列进行比较

发布于 2025-02-08 09:17:12 字数 869 浏览 0 评论 0 原文

我有一个dataframe df_corp

ID        arrival_date         leaving_date
1           01/02/20             05/02/20
2           01/03/20             07/03/20
1           12/02/20             20/02/20
1           07/03/20             10/03/20
2           10/03/20             15/03/20

我想找到一个行的 toffe_date 到达的 到达下一个条目的与ID相对于ID 。基本上,我想知道他们再次预订多久。

因此,它看起来像这样。

ID        arrival_date         leaving_date       time_between
1           01/02/20             05/02/20             NaN
2           01/03/20             07/03/20             NaN
1           12/02/20             20/02/20              7
1           07/03/20             10/03/20             15
2           10/03/20             15/03/20              3

我已经尝试按ID进行分组来完成总和,但是我对如何从下一行获得值以及一列中的一个不同的列感到非常失落。

I have a dataframe df_corp:

ID        arrival_date         leaving_date
1           01/02/20             05/02/20
2           01/03/20             07/03/20
1           12/02/20             20/02/20
1           07/03/20             10/03/20
2           10/03/20             15/03/20

I would like to find the difference between leaving_date of a row and arrival date of the next entry with respect to ID. Basically I want to know how long before they book again.

So it'll look something like this.

ID        arrival_date         leaving_date       time_between
1           01/02/20             05/02/20             NaN
2           01/03/20             07/03/20             NaN
1           12/02/20             20/02/20              7
1           07/03/20             10/03/20             15
2           10/03/20             15/03/20              3

I've tried grouping by ID to do the sum but I'm seriously lost on how to get the value from the next row and a different column in one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雨轻弹 2025-02-15 09:17:12

您需要转换并执行 获得上一个出发日期:

# arrival
a = pd.to_datetime(df_corp['arrival_date'], dayfirst=True)
# previous departure per ID
l = pd.to_datetime(df_corp['leaving_date'], dayfirst=True).groupby(df_corp['ID']).shift()
# difference in days
df_corp['time_between'] = (a-l).dt.days

输出:

   ID arrival_date leaving_date  time_between
0   1     01/02/20     05/02/20           NaN
1   2     01/03/20     07/03/20           NaN
2   1     12/02/20     20/02/20           7.0
3   1     07/03/20     10/03/20          16.0
4   2     10/03/20     15/03/20           3.0

You need to convert to_datetime and to perform a GroupBy.shift to get the previous departure date:

# arrival
a = pd.to_datetime(df_corp['arrival_date'], dayfirst=True)
# previous departure per ID
l = pd.to_datetime(df_corp['leaving_date'], dayfirst=True).groupby(df_corp['ID']).shift()
# difference in days
df_corp['time_between'] = (a-l).dt.days

output:

   ID arrival_date leaving_date  time_between
0   1     01/02/20     05/02/20           NaN
1   2     01/03/20     07/03/20           NaN
2   1     12/02/20     20/02/20           7.0
3   1     07/03/20     10/03/20          16.0
4   2     10/03/20     15/03/20           3.0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文