说我有一个数据帧。数据框有三列foo1,foo2,fooName,并有4,000行。在每第5行中,fooName'blah'中有一个值。我想通过数据框并说当fooName等于'blah'时,foo1的接下来的4个值(那些没有用blah值填充的值)被设置为foo1的值,其中fooName等于'blah'。< / p>
通过执行以下操作,我已经能够实现这一目标:
i = 0
while i is <= len(dataframe):
if dataframe[fooName].values[i] = 'blah':
x = i + 5
dataframe['foo1'][i:x] = dataframe['foo1'].values[i]
else:
i = i + 1
return dataframe
这很有效,但速度很慢。有没有办法以更有效的方式做到这一点?
答案 0 :(得分:1)
IIUC然后以下工作
dataframe.loc[dataframe['fooname'] !='blah', 'foo1'] = np.NaN
dataframe['foo1'] = dataframe['foo1'].ffill()
因此,您可以使用NaN
替换不符合条件的行,然后调用ffill
转发填充值