[英]Finding a value from the previous row in Pandas
我有以下數據框
Date UUID Value RANK
01/03/2019 A 0 2
28/02/2019 A 1 1
28/02/2019 B 2 2
26/02/2019 B 3 1
24/02/2019 C 4 2
21/02/2019 C 1 1
我想得到以下內容:
Date UUID Value RANK PreValue
01/03/2019 A 0 2 1
28/02/2019 A 1 1 N/A
28/02/2019 B 2 2 3
26/02/2019 B 3 1 N/A
24/02/2019 C 4 2 1
21/02/2019 C 1 1 N/A
我將如何獲得以前的價值?
任何幫助將不勝感激。
編輯:所以我想要做的是有效地根據等級和 uuid 移動值
你.groupby
,只是錯過了.groupby
:
df['PrevValue'] = df.sort_values(['UUID', 'RANK']).groupby('UUID').Value.shift(1)
print(df)
Date UUID Value RANK PrevValue
0 01/03/2019 A 0 2 1.0
1 28/02/2019 A 1 1 NaN
2 28/02/2019 B 2 2 3.0
3 26/02/2019 B 3 1 NaN
4 24/02/2019 C 4 2 1.0
5 21/02/2019 C 1 1 NaN
一種有趣的方式,使用帶有drop
idxmax
,只需shift
整個值和條件分配
df.loc[df.index.drop(df.groupby('UUID').RANK.idxmin()),'New']=df.Value.shift(-1)
df
Date UUID Value RANK New
0 01/03/2019 A 0 2 1.0
1 28/02/2019 A 1 1 NaN
2 28/02/2019 B 2 2 3.0
3 26/02/2019 B 3 1 NaN
4 24/02/2019 C 4 2 1.0
5 21/02/2019 C 1 1 NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.