在熊猫中每组的第一个和最后一个位置之前和之后添加行

Shu*_*m R 5 python dataframe pandas

我有一个数据框

value    id
100       1
200       1
300       1
500       2
600       2
700       3
Run Code Online (Sandbox Code Playgroud)

我想按 id 分组并在每个组的第一行之前和最后一行之后添加行,以便我的数据框看起来:我正在添加带有值的行 0

value    id
0         1
100       1
200       1
300       1
0         1
0         2
500       2
600       2
0         2
0         3
700       3
0         3
Run Code Online (Sandbox Code Playgroud)

现在对于每组 id,我想添加序列列,以便:

value    id    sequence
0         1    1
100       1    2
200       1    3
300       1    4
0         1    5
0         2    1
500       2    2
600       2    3
0         2    4
0         3    1
700       3    2
0         3    3
Run Code Online (Sandbox Code Playgroud)

最后一部分很简单,但我正在寻找如何在每个组之前和之后添加行?

jez*_*ael 3

没那么容易:

def f(x):
    x = pd.DataFrame(np.concatenate([np.array([[0, x['id'].iat[0]]]), 
                                     x.values,
                                     np.array([[0, x['id'].iat[0]]])]), columns=x.columns)
    return (x)

df = df.groupby('id').apply(f).reset_index(drop=True)

df['seq'] = df.groupby('id').cumcount() + 1
print (df)
    value  id  seq
0       0   1    1
1     100   1    2
2     200   1    3
3     300   1    4
4       0   1    5
5       0   2    1
6     500   2    2
7     600   2    3
8       0   2    4
9       0   3    1
10    700   3    2
11      0   3    3
Run Code Online (Sandbox Code Playgroud)