获取 pandas 中的累积和
上下文
日期时间 | Campaign_name | 状态 | 开放 |
---|---|---|---|
时间2022-03-15 00: | 00unny_campaign | 开放 | |
2022-03-15 01: | 00unny_campaign | 继续 | |
2022-03-15 02: | 00unny_campaign | 继续 | |
2022-03-15 03: | 00unny_campaign | 继续 | |
2022-03-15 04: | 00unny_campaign | 关闭 | |
2022-03-15 08: | 00unny_campaign | 打开 | |
2022-03-15 09: | 00unny_campaign | 继续 | |
2022-03-15 10: | 00unny_campaign | 关闭 |
问题
我需要计算从打开到关闭的时间。
我现在的代码
有两种我可以采用的方法。获取每个“关闭”中的打开时间或每个“打开”和“继续”中的累积 open_time。这是我对最后一项的看法。
我现在的代码几乎没问题,它不计算关闭和打开之间的时间,但它忘记了最后一次时间差的总和。
df["Datetime"] = pd.to_datetime(df["Datetime"])
df["time_diff"] = df["Datetime"].diff()
df["time_diff"] = df["time_diff"].astype("timedelta64[m]").fillna(0)
condition = df["Status"] == "Close"
df.loc[condition, "time_diff"] = 0
df["Cumulative time"] = df.groupby(["Campaign_name"])["time_diff"].cumsum()
df = df.drop("time_diff", 1)
Context
Datetime | Campaign_name | Status | Open_time |
---|---|---|---|
2022-03-15 00:00 | Funny_campaign | Open | |
2022-03-15 01:00 | Funny_campaign | Continue | |
2022-03-15 02:00 | Funny_campaign | Continue | |
2022-03-15 03:00 | Funny_campaign | Continue | |
2022-03-15 04:00 | Funny_campaign | Close | |
2022-03-15 08:00 | Funny_campaign | Open | |
2022-03-15 09:00 | Funny_campaign | Continue | |
2022-03-15 10:00 | Funny_campaign | Close |
Problem
I need to calculate the time from open to close.
My code right now
There are two approches I could go with. Get the open time in each 'Close' or a cumulative open_time in each 'Open' and 'Continue'. Here is my take on the last one.
My code right now is almost fine, it doesn't count the time between Close and Open but it forgets to sum the last time difference.
df["Datetime"] = pd.to_datetime(df["Datetime"])
df["time_diff"] = df["Datetime"].diff()
df["time_diff"] = df["time_diff"].astype("timedelta64[m]").fillna(0)
condition = df["Status"] == "Close"
df.loc[condition, "time_diff"] = 0
df["Cumulative time"] = df.groupby(["Campaign_name"])["time_diff"].cumsum()
df = df.drop("time_diff", 1)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
IIUC,您可以在打开时启动新组并使用:
输出:
或仅分配给“关闭”:
输出:
对于每个组的关闭打开差异:
输出:
IIUC, you could start new groups on the opens and use:
Output:
Or to only assign to "Close":
Output:
And for just the difference close-open for each group:
Output: