栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633979.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号