如何将行分成 10 分钟的间隔?

use*_*_12 2 python python-3.x pandas

假设这是我的示例数据:

         ID     datetime           
0         2  2015-01-09 19:05:39   
1         1  2015-01-10 20:33:38   
2         1  2015-01-10 20:33:38   
3         1  2015-01-10 20:45:39   
4         1  2015-01-10 20:46:39     
5         1  2015-01-10 20:46:59   
6         1  2015-01-10 20:50:39   
Run Code Online (Sandbox Code Playgroud)

我想创建一个新列“BIN”,它告诉我们该行属于哪个 10 分钟的 bin。

即)选择最小日期时间并从那里开始。在此示例中,数据第一行是最短时间,但我的真实数据并非如此。我的真实数据没有排序。

         ID     datetime           bin 
0         2  2015-01-09 19:05:39   1
1         1  2015-01-10 20:33:38   2
2         1  2015-01-10 20:33:38   2
3         1  2015-01-10 20:45:39   3
4         1  2015-01-10 20:46:39   3  
5         1  2015-01-10 20:46:59   3
6         1  2015-01-10 20:50:39   3
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 5

首先减去datetimetimedeltas 的最小值,然后通过 来创建10minutesSeries.dt.floor,然后Series.rank最后通过 转换为整数Series.astype

df['datetime'] = pd.to_datetime(df['datetime'])

df['bin'] = (df['datetime'].sub(df['datetime'].min())
                           .dt.floor('10Min')
                           .rank(method='dense')
                           .astype(int))
print (df)
   ID            datetime  bin
0   2 2015-01-09 19:05:39    1
1   1 2015-01-10 20:33:38    2
2   1 2015-01-10 20:33:38    2
3   1 2015-01-10 20:45:39    3
4   1 2015-01-10 20:46:39    3
5   1 2015-01-10 20:46:59    3
6   1 2015-01-10 20:50:39    3
Run Code Online (Sandbox Code Playgroud)