有没有更有效的方法从一行中获取值并将其应用于同一列中的下一个“n”行?Pandas

2024-09-27 21:29:47 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数据帧。dataframe有三列foo1、foo2、foonname,共有4000行。每5行foonname中就有一个值'blah'。我想遍历dataframe,当foonname等于'blah'时,foo1的下4个值(那些没有填充blah值的值)被设置为foo1的值,其中foonname等于'blah'

我可以通过以下步骤来实现这一点:

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

这是可行的,但速度很慢。有没有什么方法可以做到这一点,但更有效的方式


Tags: 数据dataframelenifis步骤elseblah
1条回答
网友
1楼 · 发布于 2024-09-27 21:29:47

IIUC那么以下应该可以

dataframe.loc[dataframe['fooname'] !='blah', 'foo1'] = np.NaN
dataframe['foo1'] = dataframe['foo1'].ffill()

因此可以用NaN替换不满足条件的行,然后调用ffill来向前填充值

相关问题 更多 >

    热门问题