Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将unix时间戳划分为10分钟间隔?_Python_Python 3.x_Pandas - Fatal编程技术网

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

Python 如何将unix时间戳划分为10分钟间隔?,python,python-3.x,pandas,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 14209220

我有这样的数据

         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分钟的间隔。我需要一列来指示这一行属于哪个箱子

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

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

使用for binning 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  

我忘了提到我需要一列来指出这一行也属于哪个十箱。更新了问题。@user_12-您能添加预期的输出吗?让我解释一下。如果我有一个datetime 2015-01-01 00:00:00到datetime 2015-01-01 00:10:00,那么这些时间在中间的行应该属于第一个bin,然后2015-01-01 00:10:00到2015-01-01 00:20:00属于另一个bin。我需要[0,1…]指示垃圾箱,谢谢。让我用我的原始数据检查一下。@user_12-
为什么要把它除以109*-因为默认值为
ns
-纳秒