我有一个带有几行的熊猫数据框,如下所示:
x.head()
id jname wbdqueue_id startdatetime \
59 1341127 ondemand_build_baspen-w7g 26581 2017-07-31 23:14:56
60 1341126 ondemand_qa_qforchecka 26581 2017-07-31 23:15:35
61 1341125 ondemand_build_bchecka 26581 2017-07-31 23:14:56
63 1341123 ondemand_build_baspen-w7f 26581 2017-07-31 23:10:05
64 1341122 ondemand_update_waspen-w7a 26581 2017-07-31 23:09:32
enddatetime
59 2017-07-31 23:19:12
60 2017-07-31 23:34:12
61 2017-07-31 23:15:30
63 2017-07-31 23:14:56
64 2017-07-31 23:10:00
我想,每个wbdqueue_id,得到的区别的startDateTime ondemand_update_waspen-w7a和enddatetime ondemand_build_baspen-w7g的。怎么做呢?
我对CSV文件进行了初始化,并将startdatetime和enddatetime都解析为时间。然后,我按wbdqueue_id分组。我的想法是按jname索引每个组,以便可以找到所需的两个jname的开始和结束时间戳记。但是,当我这样做时,所有其他值都变为NaN或NaT(对于时间列)。
-萨钦
我将使用描述的逻辑编写一个函数,以使事情变得非常明确,并使后续代码易于遵循:
import pandas as pd
def get_time_diff(dff):
start_time = dff[dff.jname.eq('ondemand_update_waspen-w7a')].startdatetime.values[0]
end_time = dff[dff.jname.eq('ondemand_build_baspen-w7g')].enddatetime.values[0]
return pd.Timedelta(end_time - start_time)
然后,您可以在group-by
操作中使用该功能:
df.groupby('wbdqueue_id').apply(get_time_diff)
这样产生:
wbdqueue_id
26581 00:09:40
dtype: timedelta64[ns]
请注意,我正在使用end_time - start_time
,因为从逻辑上讲,您希望返回正时间增量,并且结束时间始终大于开始时间。
我希望这是有目的的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句