按组添加具有先前值的列

Add column with previous values by group

我得到了以下数据框:

lst=[['01012021','A',10],['01012021','B',20],['02012021','A',12],['02012021','B',23]]
df2=pd.DataFrame(lst,columns=['Date','FN','AuM'])

我想通过 FN 添加一个包含先前值的列。结果我应该得到以下数据框:

df2=pd.DataFrame(lst,columns=['Date','FN','AuM','PreviousValues'])

你能帮帮我吗?

您是指 FN 的先前值吗?如果是这样,请尝试使用

df2['PreviousValues'] = df2['FN'].shift(1)

使用shift

df2['PreviousValues'] = df2['FN'].shift()

输出:


        Date       FN   AuM PreviousValues
0       01012021    A   10  NaN
1       01012021    B   20  A
2       02012021    A   12  B
3       02012021    B   23  A

正如其他答案指出的那样,shift 可用于获取相邻值,但我认为您的意图是使用某个分组内的先前值。如果是这种情况,请在 shift.

之前使用 groupby
df2['PreviousValues'] = df2.groupby('FN')['AuM'].shift()


       Date FN  AuM  PreviousValues
0  01012021  A   10             NaN
1  01012021  B   20             NaN
2  02012021  A   12            10.0
3  02012021  B   23            20.0