Python 使用Groupby(shift)函数为第一个条目返回null

Python 使用Groupby(shift)函数为第一个条目返回null,python,pandas,Python,Pandas,对于下面的代码,在python中,我试图获得最新评级(按日期)与之前评级(我在“orinc”中完成)之间的差异 但是,如果没有以前的评级,或者“H_Name”的第一个条目,则返回当前评级。是否有任何东西要添加到此代码中,以便返回“null”或“nan” df2['orinc'] = df2['HIR_OfficialRating'] - df2.groupby('H_Name')['HIR_OfficialRating'].shift(1) 当然,检查列H_Name中的值是否唯一,如果是,则在

对于下面的代码,在python中,我试图获得最新评级(按日期)与之前评级(我在“orinc”中完成)之间的差异

但是,如果没有以前的评级,或者“H_Name”的第一个条目,则返回当前评级。是否有任何东西要添加到此代码中,以便返回“null”或“nan”

df2['orinc'] = df2['HIR_OfficialRating'] - df2.groupby('H_Name')['HIR_OfficialRating'].shift(1)

当然,检查列
H_Name
中的值是否唯一,如果是,则在
shift
之后的每个值都返回缺少的值,因为之前的值不存在移位

出于同样的原因,每组的第一个值是
NaN

df2 = pd.DataFrame({
    'H_Name': ['a','a','a','a','e','b','b','c','d'],
    'HIR_OfficialRating': list(range(9))})

df2['new'] = df2.groupby('H_Name')['HIR_OfficialRating'].shift(1)
print (df2) 
  H_Name  HIR_OfficialRating  new
0      a                   0  NaN < first value of group a
1      a                   1  0.0
2      a                   2  1.0
3      a                   3  2.0
4      e                   4  NaN <-unique e
5      b                   5  NaN < first value of group b
6      b                   6  5.0
7      c                   7  NaN <-unique c
8      d                   8  NaN <-unique d
df2['orinc'] = df2['HIR_OfficialRating'] - df2.groupby('H_Name')['HIR_OfficialRating'].shift(1)
print (df2) 
  H_Name  HIR_OfficialRating  orinc
0      a                   0    NaN
1      a                   1    1.0
2      a                   2    1.0
3      a                   3    1.0
4      e                   4    NaN
5      b                   5    NaN
6      b                   6    1.0
7      c                   7    NaN
8      d                   8    NaN