【发布时间】:2023-03-12 06:30:02
【问题描述】:
目前我正在处理不同主题的每周数据,但它可能有一些没有数据的长期连续性,所以,我想做的就是为每个 id 保持最长连续几周的连续性。我的数据如下所示:
id week
1 8
1 15
1 60
1 61
1 62
2 10
2 11
2 12
2 13
2 25
2 26
我的预期输出是:
id week
1 60
1 61
1 62
2 10
2 11
2 12
2 13
我有点接近,试图在week==week.shift()+1 时用 1 标记。问题是这种方法不会标记连续出现的第一次出现,而且我也无法过滤最长的一次:
df.loc[ (df['id'] == df['id'].shift())&(df['week'] == df['week'].shift()+1),'streak']=1
根据我的例子,这会带来:
id week streak
1 8 nan
1 15 nan
1 60 nan
1 61 1
1 62 1
2 10 nan
2 11 1
2 12 1
2 13 1
2 25 nan
2 26 1
关于如何实现我想要的任何想法?
【问题讨论】:
-
您可以通过以下方式获得另一列(streak1):
week==week.shift(-1)-1,这样您也可以识别第一列。您可能需要 xor streak 和 streak1 才能获得最终结果
标签: python pandas time-series