簡體   English   中英

從 Pandas 的前一行中查找值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM