[英]Pandas : Find last non-null value for each different value of a variable
I have a dataframe like this one: 我有一个像这样的数据框:
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
What I want is, the last previous non-null value of l1 for each group of a1 values. 我想要的是每组a1值的最后一个上一个非空值l1。 So the expected output is:
因此,预期输出为:
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
I have tried to use shift but I don´t know how to skip missing values. 我尝试使用shift,但是我不知道如何跳过缺失的值。
You'll need groupby
and apply
here: 您需要
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
Alternatively, chain two groupby
calls in succession: 或者,连续链接两个
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.