Python通过组元素循环

时间:2018-09-22 14:10:47

标签: python pandas pandas-groupby

我有一个以下格式的数据框对象:

$_SESSION

我想通过sessionId将上述数据帧分组,然后找到每个组的最后一个元素时间戳和第一个元素时间戳的时差。到目前为止,我能够做到这一点:

if(isset($_SESSION['error'])){
    echo($_SESSION['error']);
    unset($_SESSION['error']);
}

上述方法的问题是我无法在创建的各个组中循环,因为未重置索引。从上面的代码中,我得到以下格式的组:

第一组

    _id      botId   id   sessionId    timestamp      intentStatus  
0   5ba2a04   tony  9336  asdg23eas  1537385724842     NotHandled  
1   5babb04   tony  0434  bbdg23eas  1537385722365      Handled
2   6ba2a04   tony  7336  bbdg23eas  1537385932445     NotHandled  
3   7babb04   tony  0454  asdg23eas  1537385038234      Handled

第二组

    groupBySession = df.groupby('sessionId')
    for name, group in groupBySession:
        group = group.reset_index(drop=True)

如果您注意到,索引将被替换并从0开始。但是,当我尝试将第二组的第一个元素的第一个元素打印为

     _id        botId   id  sessionId   timestamp       intentStatus  
  0 5ba2a04     tony   9336 asdg23eas  1537385724842     NotHandled
  1 7babb04     tony   0454 asdg23eas  1537385724842     NotHandled  

我遇到以下错误:

     _id        botId   id  sessionId   timestamp       intentStatus  
  0 5babb04     tony   0434 bbdg23eas  1537385722365      Handled
  1 6ba2a04     tony   7336 bbdg23eas  1537385932445     NotHandled   

我有做错或遗漏的事情吗?有没有更好的方法来实现这一点?

1 个答案:

答案 0 :(得分:0)

要遍历groupby,然后遍历每个组的各个行:

for name, group in groupBySession:
   for index, row in group.iterrows():
       row['whtevr col']