我有下面的时间序列数据帧。我想用上一个值填充缺少的值。但是,我只想填充第一个有效索引和最后一个有效索引之间缺少的值。所以我要填充的列对于每一行都是不同的。我该怎么做?你知道吗
所以,给定这个数据帧。你知道吗
import numpy as np
import pandas as pd
df = pd.DataFrame([[1, 2 ,3,np.nan,5], [1, 3 , np.nan , 4 , np.nan], [4, np.nan , 7 , np.nan,np.nan]], columns=[2007,2008,2009,2010,2011])
输入数据帧:
2007 2008 2009 2010 2011
1 2 3 NaN 5
1 3 NaN 4 NaN
4 Nan 7 NaN NaN
输出数据帧:
2007 2008 2009 2010 2011
1 2 3 3 5
1 3 3 4 NaN
4 4 7 NaN NaN
我想为第一个有效的索引和最后一个有效的索引创建新的列,然后使用.apply()但是如何在每行中填充不同的列呢?你知道吗
def fillMissing(x):
first_valid = int(x["first_valid"])
last_valid = int(x["last_valid"])
for i in range(first_valid,last_valid + 1):
missing.append(i)
#What should i do here since the following is not valid
#x[missing] = x[missing].fillna(method='ffill', axis=1)
df.apply(fillMissing , axis=1)
这里有两个完全基于NumPy的,灵感来自^{} -
示例运行-
在较大的
df
上进行运行时测试,并填写50%
nan-你可以用
iloc
来做,但我更喜欢用Numpy来做。本质上,使用ffill
来转发填充值,然后将NaN
的值屏蔽到底。你知道吗相关问题 更多 >
编程相关推荐