当前位置: 代码迷 >> python >> Python通过组元素循环
  详细解决方案

Python通过组元素循环

热度:109   发布时间:2023-07-14 09:52:21.0

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

    _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

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

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

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

第一组

     _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   

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

print(group[0])    

我收到以下错误:

KeyError: 0  

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

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

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