【发布时间】:2020-01-06 10:48:43
【问题描述】:
我试图通过时间戳来表示分组。首先,我必须将输入的时间(字符串)转换为日期时间。将其转换为 datetime 后,我注意到尽管给出了 pandas 添加日期的特定格式,但我不需要日期。我正在努力删除它并只保留时间对象,但我没有成功。我为删除日期所做的任何事情都会将 dtype 返回到我无法在其上执行 groupby 的对象。
示例数据:
https://miratrix.co.uk/ 00:01:55
https://miratrix.co.uk/ 00:02:02
https://miratrix.co.uk/ 00:02:45
https://miratrix.co.uk/ 00:01:22
https://miratrix.co.uk/ 00:02:02
https://miratrix.co.uk/app-marketing-agency/ 00:02:23
https://miratrix.co.uk/get-in-touch/ 00:02:26
https://miratrix.co.uk/get-in-touch/ 00:00:18
https://miratrix.co.uk/get-in-touch/ 00:02:37
https://miratrix.co.uk/ 00:00:31
https://miratrix.co.uk/ 00:02:00
https://miratrix.co.uk/app-store-optimization-... 00:02:25
https://miratrix.co.uk/ 00:03:36
https://miratrix.co.uk/app-marketing-agency/ 00:02:09
https://miratrix.co.uk/get-in-touch/ 00:02:14
https://?page_id=16198/ 00:00:15
https://videos/channel/UCAQfRNzXGD4BQICkO1KQZUA/ 00:09:07
https://miratrix.co.uk/get-in-touch/ 00:01:39
https://miratrix.co.uk/app-marketing-agency/ 00:01:07
到目前为止我所做的尝试
*Returned Object*
ga_organic['NEW Avg. Time on Page'] = pd.to_datetime(ga_organic['Avg. Time on Page'], format="%H:%M:%S").dt.time
*Returned Datetime but when trying to sample only time it returned an object*
ga_organic['NEW Avg. Time on Page'] = ga_organic['Avg. Time on Page'].astype('datetime64[ns]')
ga_organic['NEW Avg. Time on Page'].dt.time
我有一种关于日期时间的感觉,我不知道,这就是我遇到这个问题的原因。欢迎任何帮助或指导。
####Update####
感谢 ALollz 提供时间戳的解决方案。
ga_organic['NEW Avg. Time on Page'] = pd.to_timedelta(ga_organic['Avg. Time on Page'])
但是,当使用 GroupBy 使用此方法时,我仍然遇到相同的错误:
avg_time = ga_organic.groupby(ga_organic.index)['NEW Avg. Time on Page'].mean()
错误:“DataError:没有要聚合的数字类型”
是否有处理分组日期时间的特定功能?
【问题讨论】:
-
如果你没有
date,那么合适的dtype是timedelta64和pd.to_timedelta -
这看起来成功了!谢谢!但是,仍然不能使用 groupby().mean()。对此有什么想法吗?
-
您通常不会在日期时间列上使用
groupby。您可能想要使用resample,因此您可以指定执行mean操作的采样时间。请注意,resample需要一个日期时间索引(因此您希望将''Avg. Time on Page'列设置为索引
标签: python pandas datetime pandas-groupby python-datetime