您需要
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)