【发布时间】:2021-09-07 16:09:37
【问题描述】:
我正在为一个明显简单的任务而苦苦挣扎,希望在这里找到一些帮助!
我有类似以下 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 行中的新会话名称。
我的方法是对独特的会话进行迭代,但是当我在“间隙”列中找到 True 时,我无法重命名这些部分。
我想留在“熊猫世界”,因为这是一项大数据任务。
【问题讨论】:
-
你能提供一个预期输出的例子吗?
标签: python pandas dataframe datetime time-series