import pandas as pd
import numpy as np
# 创建示例数据
df = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6],
'time': ['2021-01-01 10:00:00', '2021-01-01 10:00:05', '2021-01-01 10:00:23',
'2021-01-01 10:01:00', '2021-01-01 10:01:01', '2021-01-01 10:01:22']})
# 将时间转换为datetime类型的数据并按时间排序
df['time'] = pd.to_datetime(df['time'])
df = df.sort_values(by='time')
# 将时间差分别计算,并创建新的一列
df['time_diff'] = (df['time'] - df['time'].shift()).astype('timedelta64[s]').fillna(0)
# 判断时间差是否小于30秒,并在新的一列中标记
df['less_than_30s'] = np.where(df['time_diff'] >= 30, False, True)
# 按id分组统计是否所有时间差都小于30秒
is_all_less_than_30s = df.groupby('id')['less_than_30s'].sum() == len(df) - 1
# 输出结果
print(is_all_less_than_30s)
输出结果:
id
1 False
2 False
3 False
4 False
5 False
6 False
Name: less_than_30s, dtype: bool
如果返回的结果中值为True,说明该id下的所有行与相邻行的时间差都小于30秒。反之,返回False。
下一篇:比较模型的性能并对结果添加注释