在pandas数据框中跨行获取最后一个非na值

在pandas数据框中跨行获取最后一个非na值,第1张

在pandas数据框中跨行获取最后一个非na值

您需要

last_valid_index
自定义函数,因为如果所有值都
NaN
返回
KeyError

def f(x):    if x.last_valid_index() is None:        return np.nan    else:        return x[x.last_valid_index()]df['status'] = df.apply(f, axis=1)print (df)     1      2      3      4      5      6      7      8      9           2016-06-02  7.080  7.079  7.079  7.079  7.079  7.079    NaN    NaN    NaN   2016-06-08  7.053  7.053  7.053  7.053  7.053  7.054    NaN    NaN    NaN   2016-06-09  7.061  7.061  7.060  7.060  7.060  7.060    NaN    NaN    NaN   2016-06-14    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN   2016-06-15  7.066  7.066  7.066  7.066    NaN    NaN    NaN    NaN    NaN   2016-06-16  7.067  7.067  7.067  7.067  7.067  7.067  7.068  7.068    NaN   2016-06-21  7.053  7.053  7.052    NaN    NaN    NaN    NaN    NaN    NaN   2016-06-22  7.049  7.049    NaN    NaN    NaN    NaN    NaN    NaN    NaN   2016-06-28  7.058  7.058  7.059  7.059  7.059  7.059  7.059  7.059  7.059 status  0        2016-06-02   7.079  2016-06-08   7.054  2016-06-09   7.060  2016-06-14     NaN  2016-06-15   7.066  2016-06-16   7.068  2016-06-21   7.052  2016-06-22   7.049  2016-06-28   7.059

替代解决方案-

fillna
使用方法
ffill
并按以下方式选择最后一列
iloc

df['status'] = df.ffill(axis=1).iloc[:, -1]print (df) status  0        2016-06-02   7.079  2016-06-08   7.054  2016-06-09   7.060  2016-06-14     NaN  2016-06-15   7.066  2016-06-16   7.068  2016-06-21   7.052  2016-06-22   7.049  2016-06-28   7.059


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5639849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存