首页 > 解决方案 > 在熊猫中应用移位函数组

问题描述

我正在尝试从 curr_value 功能创建新的列功能。在这里,我想从以前的当前值中获取值,使用df.curr_value.shift(fill_value=-1)我可以获得以前的值。如何仅将 shift 应用于唯一的“uid”列。例如,在下面的示例中,我想将 shift 应用于 uniqie ID 值。 df[df['uid']==1].curr_value.shift(fill_value=-1)pandas 中还有其他方法可以让我不需要迭代唯一的 uid 值吗?

import pandas as pd
import numpy as np
events  = np.array([[1, 1, 1], 
[1, 2, 4], 
[1, 3, 3], 
[1, 3, 4], 
[2, 1, 4], 
[2, 2, 3]])
df=pd.DataFrame(data=events, columns=["uid", "eid", "curr_value"])

标签: pythonpython-3.xpandas

解决方案


是的,我们可以做到groupby

df['pre'] = df.groupby('uid')['curr_value'].shift(fill_value=-1)
Out[5]: 
0   -1
1    1
2    4
3    3
4   -1
5    4
Name: curr_value, dtype: int32

推荐阅读