【发布时间】:2023-04-02 06:40:01
【问题描述】:
问题描述:我有一个基本上包含 2 列的数据框 - Member_ID 和 Service_from。我正在尝试计算每个 ID 的服务日期之间的日差总和。会员累计天数达到 365 天后,天差应重置为 0。
这是我的数据框的样子:
Member_ID Service_from Service_year Diff running_total Desired_total
540 2/1/2016 2016 0 days 00:00:00.000000000 0 days 00:00:00.000000000 0 days 00:00:00.000000000
540 3/29/2016 2016 57 days 00:00:00.000000000 57 days 00:00:00.000000000 57 days 00:00:00.000000000
540 4/26/2016 2016 28 days 00:00:00.000000000 85 days 00:00:00.000000000 85 days 00:00:00.000000000
540 5/27/2016 2016 31 days 00:00:00.000000000 116 days 00:00:00.000000000 116 days 00:00:00.000000000
540 7/1/2016 2016 35 days 00:00:00.000000000 151 days 00:00:00.000000000 151 days 00:00:00.000000000
540 8/5/2016 2016 35 days 00:00:00.000000000 186 days 00:00:00.000000000 186 days 00:00:00.000000000
540 9/13/2016 2016 39 days 00:00:00.000000000 225 days 00:00:00.000000000 225 days 00:00:00.000000000
540 10/25/2016 2016 42 days 00:00:00.000000000 267 days 00:00:00.000000000 267 days 00:00:00.000000000
540 11/22/2016 2016 28 days 00:00:00.000000000 295 days 00:00:00.000000000 295 days 00:00:00.000000000
540 12/27/2016 2016 35 days 00:00:00.000000000 330 days 00:00:00.000000000 330 days 00:00:00.000000000
540 1/24/2017 2017 28 days 00:00:00.000000000 358 days 00:00:00.000000000 358 days 00:00:00.000000000
540 2/21/2017 2017 28 days 00:00:00.000000000 386 days 00:00:00.000000000 0 days 00:00:00.000000000
540 4/11/2017 2017 49 days 00:00:00.000000000 435 days 00:00:00.000000000 77
540 4/26/2017 2017 15 days 00:00:00.000000000 450 days 00:00:00.000000000 92
540 4/26/2017 2017 0 days 00:00:00.000000000 450 days 00:00:00.000000000 92
540 5/1/2017 2017 5 days 00:00:00.000000000 455 days 00:00:00.000000000 97
540 5/1/2017 2017 0 days 00:00:00.000000000 455 days 00:00:00.000000000 97
25 9/26/2017 2017 0 days 00:00:00.000000000 0 days 00:00:00.000000000 0 days 00:00:00.000000000
25 11/26/2017 2017 61 days 00:00:00.000000000 61 days 00:00:00.000000000 61 days 00:00:00.000000000
我可以使用以下代码将每个成员的 diff 重置为 0:
sts['diff'] = sts['service_from'].diff()
mask = sts.Member_ID != sts.Member_ID.shift(1)
sts['diff'][mask] = np.nan
sts['diff'].fillna(0, inplace=True)
但是当累计达到 365 天时我无法重置。
有人可以帮忙吗?
【问题讨论】: