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