pandas中对列进行上下平移(shift)

在利用Python进行数据操作时,有时需要对数据某列数据进行上下平移,比如对某一列进行错位加减,pandas里的groupby和shift两个函数就能轻松实现上述操作。

df = pd.DataFrame({"name":["a","a","a","b","b","c"], "value":[1,2,3,4,5,6]})
df

	name	value
0	a	1
1	a	2
2	a	3
3	b	4
4	b	5
5	c	6

将value列按name分组并将值在列内上下平移

# 向下平移
df['value_shift'] = df.groupby('name')['value'].shift(1)
df
	name	value	value_shift
0	a	1	NaN
1	a	2	1.0
2	a	3	2.0
3	b	4	NaN
4	b	5	4.0
5	c	6	NaN

# 向上平移
df['value_shift_1'] = df.groupby('name')['value'].shift(-1)
df
	name	value	value_shift	value_shift_1
0	a	1	NaN	2.0
1	a	2	1.0	3.0
2	a	3	2.0	NaN
3	b	4	NaN	5.0
4	b	5	4.0	NaN
5	c	6	NaN	NaN

通过shift函数里面的值来控制向前还是向后偏移, 缺少的值会填充NaN,groupby函数里的参数控制基于什么字段进行shift.

猜你喜欢

转载自blog.csdn.net/Evan_Blog/article/details/82753437