Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 如何确定值是按顺序发生还是按时间顺序发生?_Python_Python 3.x_Pandas_Datetime_Python Datetime - Fatal编程技术网

Python 如何确定值是按顺序发生还是按时间顺序发生?

Python 如何确定值是按顺序发生还是按时间顺序发生?,python,python-3.x,pandas,datetime,python-datetime,Python,Python 3.x,Pandas,Datetime,Python Datetime,我在下面给出了两个数据帧供您测试 df_1 = pd.DataFrame({ 'subject_id':[1,1,1,1,1,1,1,1,1,1,1], 'time_1' :['2173-04-03 10:00:00','2173-04-03 10:15:00','2173-04-03 10:30:00','2173-04-03 10:45:00','2173-04-03 11:01:00','2173-04-04 12:00:00','2173-04-05 16:00:00','2173-04

我在下面给出了两个数据帧供您测试

df_1 = pd.DataFrame({
'subject_id':[1,1,1,1,1,1,1,1,1,1,1],
'time_1' :['2173-04-03 10:00:00','2173-04-03 10:15:00','2173-04-03 10:30:00','2173-04-03 10:45:00','2173-04-03 11:01:00','2173-04-04 12:00:00','2173-04-05 16:00:00','2173-04-05 22:00:00','2173-04-06 04:00:00','2173-04-06 04:30:00','2173-04-06 06:30:00'],
'val' :[5,5,5,5,5,10,5,8,3,8,10]
})

df_2 = pd.DataFrame({
'subject_id':[1,1,1,1,1,1,1,1,1,1,1],
'time_1' :['2173-04-03 10:00:00','2173-04-03 10:15:00','2173-04-03 10:30:00','2173-04-03 10:45:00','2173-04-03 11:01:00','2173-04-04 12:00:00','2173-04-05 16:00:00','2173-04-05 22:00:00','2173-04-06 04:00:00','2173-04-06 04:30:00','2173-04-06 06:30:00'],
'val' :[5,6,5,6,5,10,5,8,3,8,10]
 })
我试图找出
val
中的值是否按顺序(时间顺序)排列。我的意思是一个值出现时没有中断(例如:5,5,5是一个序列(时间顺序),而5,6,5,6是5的序列中断的示例)。你能帮我找到那个吗

这是我尝试的东西,但它不起作用

df['time_1']= pd.to_datetime(df1['time_1'])
s=pd.to_timedelta(24,unit='h')-(df.time_1-df.time_1.dt.normalize())
df['tdiff'] = 
df.groupby(df.time_1.dt.date).time_1.diff().shift(-1).fillna(s)
df['t_d'] = df['tdiff'].dt.total_seconds()/3600
df['date'] = df['time_1'].dt.date
df.groupby(['val','date'],sort=False)['t_d'].agg({'cumduration':sum,'freq':'count'}).reset_index()
我希望我的df_2输出是这样的


您的开销有点太大了。将以下步骤填充到一行命令中:

  • 向左移动[“val”]一个位置

  • 。。。将移位序列与第二步中的[“val”]进行比较,为什么我们必须使用您要求的
    来确定它们是否有序,而不是它们是否相同。此外,查找匹配值序列在堆栈溢出时已经解决了很多次,您应该在不发布新问题的情况下找到这些解决方案。