[英]Pandas : Find last non-null value for each different value of a variable
我有一個像這樣的數據框:
a1 l1
0 a NaN
1 a kl
2 a NaN
3 a NaN
4 a er
5 b ye
6 b NaN
7 b fk
8 b NaN
我想要的是每組a1值的最后一個上一個非空值l1。 因此,預期輸出為:
a1 l1 ex
0 a NaN NaN
1 a kl NaN
2 a NaN kl
3 a NaN kl
4 a er kl
5 b ye NaN
6 b NaN ye
7 b fk ye
8 b NaN fk
我嘗試使用shift,但是我不知道如何跳過缺失的值。
您需要groupby
並在此處apply
:
df['ex'] = df.groupby('a1').l1.apply(lambda x: x.ffill().shift())
df
a1 l1 ex
0 a NaN NaN
1 a kl NaN
2 a NaN kl
3 a NaN kl
4 a er kl
5 b ye NaN
6 b NaN ye
7 b fk ye
8 b NaN fk
或者,連續鏈接兩個groupby
調用:
df['ex'] = df.groupby('a1').ffill().groupby('a1').shift()
df
a1 l1 ex
0 a NaN NaN
1 a kl NaN
2 a NaN kl
3 a NaN kl
4 a er kl
5 b ye NaN
6 b NaN ye
7 b fk ye
8 b NaN fk
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.