问题描述
我有以下格式的数据框对象:
_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
我有做错或遗漏的事情吗? 有没有更好的方法来实现这一目标?
1楼
要遍历groupby,然后遍历每个组的各个行:
for name, group in groupBySession:
for index, row in group.iterrows():
row['whtevr col']