使用groupby和diff并表示:
df = df.groupby('ID')['Date'].apply(lambda x: x.diff().mean()).reset_index()
print (df)
ID Date
0 16812 21 days 04:48:00
1 16911 16 days 09:00:00
2 16912 10 days 00:00:00
如果需要转换时间增量,例如到几天:
df = df.groupby('ID')['Date'].apply(lambda x: x.diff().mean().days).reset_index()
print (df)
ID Date
0 16812 21
1 16911 16
2 16912 10
编辑:
#create difference column per ID
df['new'] = df.groupby('ID')['Date'].diff().dt.days
#remove NaT rows (first for each group)
df = df.dropna(subset=['new'])
#convert to integers
df['new'] = df['new'].astype(int)
#aggreagte lists and mean
df = df.groupby('ID', sort=False)['new'].agg([('val', lambda x: x.tolist()),('avg', 'mean')])
print (df)
ID
16911 [10, 2, 11, 12, 5, 75, 3, 13] 16.375
16912 [10] 10.000
16812 [11, 12, 5, 75, 3] 21.200