如何将unix时间戳记时间间隔为10分钟?

时间:2019-08-06 06:28:12

标签: 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 21:10:00 

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

         ID   timestamp           
0         2  1420830339
1         1  1420922018   
2         1  1420924200 

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

我的最小日期时间是2015年1月1日00:00:00,而我只有2015年1月1日至31日的数据。

如何使用python或pandas实现此目的。

1 个答案:

答案 0 :(得分:4)

date_rangecut一起用于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