gpt4 book ai didi

python - 在 Pandas 中将通话数据拆分为 15 分钟的间隔

转载 作者:行者123 更新时间:2023-12-04 12:30:36 24 4
gpt4 key购买 nike

我是 Python 和 Pandas 的新手,尽管我研究了很多关于间隔的问题,但我找不到任何解决我的问题的方法,我希望有人能提供帮助
这是我的 DF 样本

df = pd.DataFrame(
data=[['Mel Gibson', 'German', '2021-9-23 14:22:38', 301 ],
['Jim Carrey', 'German', '2021-9-23 14:27:39', 1041 ],
['Mel Gibson', 'German','2021-9-24 13:33:22',12]],
columns=['specialist', 'Language', 'Interval Start', 'status_duration']
)
df['Interval Start'] = pd.to_datetime(df['Interval Start'])
我想要做的是将状态持续时间转换为 15 分钟的间隔,并将它们按专家和每天分组。
我想要的输出应该如下所示:
df = pd.DataFrame(
data=[['Mel Gibson', 'German', '2021-9-23 14:15:00', 301 ],
['Jim Carrey', 'German', '2021-9-23 14:15:00', 141 ],
['Jim Carrey', 'German', '2021-9-23 14:30:00', 900 ],
['Mel Gibson', 'German','2021-9-24 13:30:00',12]],
columns=['specialist', 'Language', 'Interval Start', 'status_duration']
)
所以基本上我需要以 15 分钟的间隔分割状态持续时间的秒数,直到没有剩余的持续时间。
编辑:
我的原始数据是这样的:
    df = pd.DataFrame(
data=[['Mel Gibson', 'German', '2021-9-23 14:22:38', 301 ],
['Mel Gibson', 'German', '2021-9-23 14:27:40', 4678 ],
['Mel Gibson', 'German','2021-9-24 13:33:22',12]],
columns=['specialist', 'Language', 'Interval Start', 'status_duration']
)
df['Interval Start'] = pd.to_datetime(df['Interval Start'])
亨利的代码只给了我第一行的输出,第二行被跳过了。
还可以说,如果通话在 10:35:00 开始,则此时间间隔 (10:30-10:45) 不能超过 600 秒,因为距开始时间仅剩 10 分钟。

最佳答案

一种方法是利用 status_duration 的商和余数。 , explode结果,最后按秒加起来时间:

ref = (df.groupby(["specialist", "Language", pd.Grouper(key="Interval Start", freq="D")], as_index=False)
.agg(status_duration=("status_duration", lambda d: [*([900]*(d.iat[0]//900)), d.iat[0]%900]),
Interval=("Interval Start", "first"))
.explode("status_duration"))

ref["Interval"] = ref["Interval"].dt.floor("15min")+pd.to_timedelta(ref.groupby(ref.index).cumcount()*900, unit="sec")

print (ref)

specialist Language status_duration Interval
0 Jim Carrey German 900 2021-09-23 14:15:00
0 Jim Carrey German 141 2021-09-23 14:30:00
1 Mel Gibson German 301 2021-09-23 14:15:00
2 Mel Gibson German 12 2021-09-24 13:30:00

关于python - 在 Pandas 中将通话数据拆分为 15 分钟的间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69362373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com