本文介绍了在 pandas 中每个组的第一个和最后一个位置之前和之后添加行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个数据框
value id 100 1 200 1 300 1 500 2 600 2 700 3我想要按id分组,并在每组的第一行之前和最后一行之后添加行,这样我的数据帧看起来就像:我正在添加值 0
i want to group by id and add row before 1st row and after last row of every group such that my dataframe looks: i am adding row with value 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现在对于每个id组,我想添加序列列,例如:
Now for every group of id, i want to add sequence column such that:
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最后一部分很简单,但我正在寻找如何在每组之前和之后添加行?
the last part is easy but i am looking for how to add rows before and after every group?
推荐答案不是那么容易:
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更多推荐
在 pandas 中每个组的第一个和最后一个位置之前和之后添加行
发布评论