熊猫:在分组和重新索引后在行之间进行操作

萨钦·迈尼尼(Sachin Myneni)

我有一个带有几行的熊猫数据框,如下所示:

 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文件进行了初始化并将startdatetimeenddatetime都解析为时间。然后,我按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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章