我很困惑一个明显简单的任务,希望在这里寻求帮助!
我有类似下面的 DataFrame。
我希望能够在一个会话中识别大于某个阈值(例如1小时)的时间间隔。不考虑会话之间的时间间隔
为此,我使用.diff()方法来定位这些间隔。
我有类似下面的 DataFrame。
d = [
['2021-06-01 08:00:00',"A"],
['2021-06-01 09:00:00',"A"],
['2021-06-01 12:00:00',"B"],
['2021-06-01 13:00:00',"B"],
['2021-06-01 18:00:00',"B"],
['2021-06-01 19:00:00',"B"],
['2021-06-01 22:00:00',"C"],
['2021-06-01 23:00:00',"C"]]
df=pd.DataFrame(data=d, columns=("timestamp", "session"))
我希望能够在一个会话中识别大于某个阈值(例如1小时)的时间间隔。不考虑会话之间的时间间隔
为此,我使用.diff()方法来定位这些间隔。
df["timestamp"]= pd.to_datetime(df["timestamp"])
df["gap"]=df["timestamp"].diff().dt.seconds > 3600
主要任务是找到会话中的差异,并通过重命名部分/会话,例如使用uuid.uuid4()
将会话切成片段。
在示例中,这将导致第5/6行出现新的会话名称。
我的方法是对唯一会话进行for循环迭代,但当我在“间隙”列中找到一个True时,无法重命名部分。
我想保持在“pandas世界”中,因为这是一个大数据任务。