首页 > 解决方案 > 如何将 unix 时间戳时间分成 10 分钟间隔?

问题描述

我有这样的数据,

         ID     datetime           
0         2  2015-01-09 19:05:39   
1         1  2015-01-10 20:33:38   
2         1  2015-01-10 21:10:00 

我已将此日期时间转换为 unix 时间戳

         ID   timestamp           
0         2  1420830339
1         1  1420922018   
2         1  1420924200 

我想首先将 unix 时间戳转换为 EST 标准,然后将每一行分成 10 分钟的间隔。我需要一列来指示该行属于哪个 bin。

我的最短日期时间是 2015-01-01 00:00:00,我只有 2015 年 1 月 1 日到 31 日的数据。

如何使用 python 或 pandas 实现这一点。

标签: pythonpython-3.xpandas

解决方案


使用date_rangewithcut分箱 10 分钟:

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

bins = pd.date_range('2015-01-01', '2015-02-01', freq='10T')
df['bins'] = pd.cut(df['datetime'], bins)
df['lab'] = pd.cut(df['datetime'], bins, labels=False)

df['bins_left'] = pd.IntervalIndex(pd.cut(df['datetime'], bins)).left
df['bins_right'] = pd.IntervalIndex(pd.cut(df['datetime'], bins)).right

df['bins_left_unix'] =  df['bins_left'].to_numpy().astype(np.int64) // 10**9
df['bins_right_unix'] = df['bins_right'].to_numpy().astype(np.int64) // 10**9

print (df)
   ID            datetime                                        bins   lab  \
0   2 2015-01-09 19:05:39  (2015-01-09 19:00:00, 2015-01-09 19:10:00]  1266   
1   1 2015-01-10 20:33:38  (2015-01-10 20:30:00, 2015-01-10 20:40:00]  1419   
2   1 2015-01-10 21:10:00  (2015-01-10 21:00:00, 2015-01-10 21:10:00]  1422   

            bins_left          bins_right  bins_left_unix  bins_right_unix  
0 2015-01-09 19:00:00 2015-01-09 19:10:00      1420830000       1420830600  
1 2015-01-10 20:30:00 2015-01-10 20:40:00      1420921800       1420922400  
2 2015-01-10 21:00:00 2015-01-10 21:10:00      1420923600       1420924200  

推荐阅读