如何使用pandas聚合Datetime对象到int
发布时间:2020-12-14 04:51:46 所属栏目:百科 来源:网络整理
导读:我有这样的DataFrame结构 id time number0 1 1970-01-01 00:00:00 11 2 1970-01-02 00:00:00 22 1 1970-01-03 00:00:00 2 我想要groupby id并将pd.Datetime dtype的时间聚合为表示时间增量的int,并且我有下面的代码: def interval(a): return (np.max(a) -
我有这样的DataFrame结构
id time number 0 1 1970-01-01 00:00:00 1 1 2 1970-01-02 00:00:00 2 2 1 1970-01-03 00:00:00 2 我想要groupby id并将pd.Datetime dtype的时间聚合为表示时间增量的int,并且我有下面的代码: def interval(a): return (np.max(a) - np.min(a)).days _df = df.groupby(['id'],as_index=False).agg( { "number": numpy.sum,"time": interval,} ) 列时间来源为dtype pd.Datetime但聚合数据为int,这导致_df的时间列中的数据从int转换为pd.Datetime,如1970-01-01 00:00:00.000000000 你能告诉我如何获得聚合数据帧的时间列为int的正确结果 解决方法
您可以尝试通过np.timedelta64(1,’D’)将timedelta转换为天数,然后在
astype 之前浮动到整数:
def interval(a): a = (np.max(a) - np.min(a)) / np.timedelta64(1,'D') return a _df = df.groupby(['id'],as_index=False).agg( { "number": np.sum,} ) _df['time'] = _df['time'].astype(int) print _df id number time 0 1 3 2 1 2 2 0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |