我是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'])
Henry的代码只为第一行提供了输出,跳过了第二行
也就是说,如果电话在10:35:00开始,这个间隔(10:30-10:45)不能超过600秒,因为距离开始时间只有10分钟了
您可以使用
dt.floor()
函数进行舍入:结果(基于您编辑的数据):
然后我添加了一列,其中包含您期望的间隔数:
结果:
然后,您可以使用
numpy.repeat()
复制相应的行,并使用timedelta()
列出理解以构建相应的间隔结果:
最后,您可能需要重置索引:
结果:
一种方法是利用商和
status_duration
的余数,explode
结果,最后以秒为单位将时间相加:相关问题 更多 >
编程相关推荐