Jua*_*n C 4 python group-by pandas
我一直在努力尝试获取连续连续几周的第一周,以获取DataFrame中的特定ID,如下所示:
week id
1 1
2 1
3 1
6 1
7 1
8 1
3 2
4 2
Run Code Online (Sandbox Code Playgroud)
因此,对于ID 1,连续三个星期(1-3),然后连续三个星期(6-8),对于ID 2,连续2个星期(3-4)。因此,我想要的输出将是:
week id first_week
1 1 1
2 1 1
3 1 1
6 1 6
7 1 6
8 1 6
3 2 3
4 2 3
Run Code Online (Sandbox Code Playgroud)
我能够以此计算连续几周:
df.groupby(['id',df['week'].diff(-1).ne(-1).shift().bfill().cumsum()]).transform('count')
Run Code Online (Sandbox Code Playgroud)
但是我找不到第一周(我想构造一个新的ID,以添加从哪一周开始连续几周的连胜)
groupby获取diff和条件分配,然后ffill获取nan
df.loc[df.groupby('id').week.diff().ne(1),'fw']=df.week
df.fw=df.fw.ffill()
df
Out[158]:
week id fw
0 1 1 1.0
1 2 1 1.0
2 3 1 1.0
3 6 1 6.0
4 7 1 6.0
5 8 1 6.0
6 3 2 3.0
7 4 2 3.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |