我有一个类似这样的数据框架,它记录特定时间的IP类型。
IP Time Type
101 2018-10-16 01:07:11 A
101 2018-10-16 01:08:34 A
101 2018-10-16 02:54:11 B
101 2018-10-16 14:07:39 A
102 2018-10-17 01:09:10 A
102 2018-10-17 01:38:24 A
102 2018-10-17 02:44:10 A
102 2018-10-17 14:17:40 C 如何创建一个新列TimeCount来跟踪IP切换到新类型之前出现的次数?
预期产出如下:
IP Time Type TimeCount
101 2018-10-16 01:07:11 A 2
101 2018-10-16 01:08:34 A 2
101 2018-10-16 02:54:11 B 1
101 2018-10-16 14:07:39 A 1
102 2018-10-17 01:09:10 A 3
102 2018-10-17 01:38:24 A 3
102 2018-10-17 02:44:10 A 3
102 2018-10-17 14:17:40 C 1我想我应该使用shift(),但不知道如何将它应用于熊猫。如果它从不切换,只需计算它作为最后一个类型出现的次数。
发布于 2022-01-03 03:39:51
让我们尝试使用groupby和cumsum创建键,然后执行transform
s = df.groupby('IP')['Type'].apply(lambda x : x.ne(x.shift()).cumsum())
df['new'] = df['Type'].groupby([df['IP'],s]).transform('count')
df
IP Time Type new
101 2018-10-16 01:07:11 A 2
101 2018-10-16 01:08:34 A 2
101 2018-10-16 02:54:11 B 1
101 2018-10-16 14:07:39 A 1
102 2018-10-17 01:09:10 A 3
102 2018-10-17 01:38:24 A 3
102 2018-10-17 02:44:10 A 3
102 2018-10-17 14:17:40 C 1https://stackoverflow.com/questions/70561462
复制相似问题