簡體   English   中英

熊貓:查找變量的每個不同值的最后一個非空值

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

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