Python 如何将聚合日期时间对象用于int
我有这样的数据帧结构Python 如何将聚合日期时间对象用于int,python,datetime,pandas,aggregate,Python,Datetime,Pandas,Aggregate,我有这样的数据帧结构 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 我希望groupbyid并将具有pd.Datetimedtype的时间聚合为int表示时间增量,我有以下代码: def interval(a):
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
我希望groupbyid
并将具有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,
}
)
列时间具有原始数据类型pd.Datetime
,但是聚合的数据是int,这导致\u df
列中的数据从int转换为pd.Datetime
类似1970-01-01 00:00:00.000000000
您能告诉我如何得到正确的结果,即聚合数据帧的
time
列是int
您可以尝试通过np.timedelta64(1,'D')
将timedelta
转换为days
,然后通过以下方式将float
转换为integer
:
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,
"time": interval,
}
)
_df['time'] = _df['time'].astype(int)
print _df
id number time
0 1 3 2
1 2 2 0