如何检查数据框中各行之间的相似性并添加一个计数器列,在行匹配时递增?

我对Python(Pandas)还不是很熟悉,请帮助我解决这个问题

我的数据框看起来像这样:- Device_id 是设备的ID,该设备在时间(1524724677)显示一个消息(Msg),时间是以纪元时间表示的。

  Device_Id    Msg                Time0  ABC123     connected        15247246771  ABC123     connected        15247246792  XYZ123     device failed    15247248143  ABC123     connected        15247252794  XVZ123     device failed    15247253005  PQR123      error           15247253256  ABC123     connected        1524725345

我需要对数据框的每一行进行操作,以便添加一些新的列。

我想要的数据框看起来像这样:

  Device_Id    Msg                Time       count0  ABC123     connected        1524724677      11  ABC123     connected        1524724679      22  XYZ123     device failed    1524724814      13  ABC123     connected        1524725279      14  XVZ123     device failed    1524725300      15  PQR123      error           1524725325      16  ABC123     connected        1524725345      2      

这个计数列的工作原理如下:

请阅读所有要点以清楚了解计数列的工作原理

--对于第0行,计数为1,因为这是唯一设备--我们将根据时间增加计数器--每10分钟我们将重置计数器值--对于第1行,计数为2,因为时间(1524724679)在1524724677和1524724677 + 10分钟之间。--对于第2行,它是唯一设备且时间(1524724679)在1524724677和1524724677 + 10分钟之间,所以计数为1。--对于第3行,请注意它不是唯一设备,但计数仍为1,因为时间(1524725279)不在1524724677和1524724677 + 10分钟之间。(计数重置)--对于第4列,计数为1,因为时间(1524725300)在1524725279和1524725279 + 10分钟之间。--对于第5列,计数为1,是唯一设备且时间(1524725325)在1524725279和1524725279 + 10分钟之间。--对于第6列,计数为2,因为时间(1524725345)在1524725279和1524725279 + 10分钟之间。

计数值将在每10分钟重置,这意味着每个device_id的计数将从1开始。

每10分钟后,每个唯一的device_id将被视为新的,因此计数将从1重新开始,并在接下来的10分钟内保持其值。


回答:

你可以使用groupby和grouper函数轻松解决这个问题:

# 转换时间df['Time'] = pd.to_datetime(df['Time'], unit='s')# 获取输出df['count'] = df.groupby(['Device_Id', pd.Grouper(key='Time', freq='10min')]).cumcount()+1print(df)  Device_Id            Msg                Time  count0    ABC123      connected 2018-04-26 06:37:57      11    ABC123      connected 2018-04-26 06:37:59      22    XYZ123  device failed 2018-04-26 06:40:14      13    ABC123      connected 2018-04-26 06:47:59      14    XVZ123  device failed 2018-04-26 06:48:20      15    PQR123          error 2018-04-26 06:48:45      16    ABC123      connected 2018-04-26 06:49:05      2

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注