Python 使用Groupby(shift)函数为第一个条目返回null
对于下面的代码,在python中,我试图获得最新评级(按日期)与之前评级(我在“orinc”中完成)之间的差异 但是,如果没有以前的评级,或者“H_Name”的第一个条目,则返回当前评级。是否有任何东西要添加到此代码中,以便返回“null”或“nan”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中的值是否唯一,如果是,则在
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