按大熊猫中的时间戳差异分组

串联

我有以下数据框

   NUMBER           TIMESTAMP
0      67 2020-03-06 12:06:25
1      67 2019-09-20 16:21:45
2      67 2019-09-17 17:54:40
3      67 2019-08-21 19:59:30
4      67 2019-08-13 19:40:26
5      67 2019-06-19 19:45:12
6      67 2019-04-30 20:46:03
7      67 2019-04-29 20:46:03

我正在尝试NUMBER按时间戳进行分组,这些时间戳小于 30(可以是任意数字)天时差我期望输出为:

  NUMBER           TIMESTAMP
0      67_4   2020-03-06 12:06:25
1      67_3   2019-09-20 16:21:45
2      67_3   2019-09-17 17:54:40
3      67_3   2019-08-21 19:59:30
4      67_3   2019-08-13 19:40:26
5      67_2   2019-06-19 19:45:12
6      67_1   2019-04-30 20:46:03
7      67_1   2019-04-29 20:46:03

像这样对时间戳进行简单的差异,甚至对系列进行ceil也无济于事

#df['diff'] = df.groupby('NUMBER')['TIMESTAMP'].diff(-1).dt.days
#mask = df['diff'] > 30
#
#df.loc[mask, 'NUMBER'] = df\
#                            .loc[mask, 'NUMBER']\
#                            .astype(str) \
#                            + '_' \
#                            + df[mask]\
#                            .groupby('NUMBER')\
#                            .cumcount().add(1).astype(str)

如果我们采用简单的差异,这就是结果

  NUMBER           TIMESTAMP   diff
0   67_1 2020-03-06 12:06:25  167.0
1     67 2019-09-20 16:21:45    2.0
2     67 2019-09-17 17:54:40   26.0
3     67 2019-08-21 19:59:30    8.0
4   67_2 2019-08-13 19:40:26   54.0
5   67_3 2019-06-19 19:45:12   49.0
6     67 2019-04-30 20:46:03    1.0
7     67 2019-04-29 20:46:03    NaN

任何帮助将不胜感激。

广黄

让我们尝试比较与 thresh hold 和 的差异cumsum

thresh = 30
dt_thresh = pd.to_timedelta(thresh, unit='D')

df['NUMBER'] = df['NUMBER'].astype(str) + '_' +  \
              (df.TIMESTAMP.sort_values()
                 .groupby(df.NUMBER)        # added groupby here
                 .diff().gt(dt_thresh)
                 .groupby(df.NUMBER)        # and groupby here
                 .cumsum().add(1).astype(str)
              )

输出:

  NUMBER           TIMESTAMP
0   67_4 2020-03-06 12:06:25
1   67_3 2019-09-20 16:21:45
2   67_3 2019-09-17 17:54:40
3   67_3 2019-08-21 19:59:30
4   67_3 2019-08-13 19:40:26
5   67_2 2019-06-19 19:45:12
6   67_1 2019-04-30 20:46:03
7   67_1 2019-04-29 20:46:03

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章