Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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_Pandas - Fatal编程技术网

Python 数据帧中值的持续时间

Python 数据帧中值的持续时间,python,pandas,Python,Pandas,我有以下数据帧: f_1 f_2 f_3 00:00:00 False False False 00:05:22 True False False 00:06:40 True False False 00:06:41 False False False 00:06:42 False False False 00:06:43 False False False 00:06:44 False False False 0

我有以下数据帧:

            f_1    f_2    f_3
00:00:00  False  False  False
00:05:22   True  False  False
00:06:40   True  False  False
00:06:41  False  False  False
00:06:42  False  False  False
00:06:43  False  False  False
00:06:44  False  False  False
00:06:46  False  False  False
00:06:58  False  False  False
我想计算一个序列为真时的总持续时间。在这个例子中,唯一一个在一段时间内变为真的序列是f_1。目前,我使用以下代码:

result=pandas.Timedelta(0)
对于_,系列为误报。iteritems():
以前的时间=无
以前的值=无
对于currentTime,系列中的currentValue.iteritems():
如果以前的值为:
结果+=(当前时间-上一次时间)
前一时间=当前时间
previousValue=currentValue
打印结果。总秒数()

有更好的解决办法吗?我认为熊猫已经有了一种方法,可以这样做,也可以做类似的事情。

我认为你可以通过
索引
按、差分按、移位按和最后一次获取来创建
系列

上次多重布尔值
DataFrame
by和上次获取:


我想是的,但不一样,所以重新开始问题。虽然问题很相似,但我认为在这里陈述得更清楚,批准的答案也更好。
#if necessary convert index to Timedelta
df.index = pd.to_timedelta(df.index)

s = df.index.to_series().diff().shift(-1).dt.total_seconds()
df1 = df.mul(s, 0)
print (df1)
           f_1  f_2  f_3
00:00:00   0.0  0.0  0.0
00:05:22  78.0  0.0  0.0
00:06:40   1.0  0.0  0.0
00:06:41   0.0  0.0  0.0
00:06:42   0.0  0.0  0.0
00:06:43   0.0  0.0  0.0
00:06:44   0.0  0.0  0.0
00:06:46   0.0  0.0  0.0
00:06:58   NaN  NaN  NaN

print (df1.sum())
f_1    79.0
f_2     0.0
f_3     0.0
dtype: float64