使用条件shi获取上一行

2024-09-30 18:12:34 发布

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

我正在将一个XML转换成一个数据帧,它看起来是这样的:

enter image description here

我想为该页中的所有文本框复制pageflag列中的页码标记,在本例中,将第1行中的pageflag值复制到第9、10和11行

为此,我使用Dataframe.shift使用如下条件:

df['pageflag'] = np.where(df['pageflag']==0,df['pageflag'].shift(1),df['pageflag'])

它应该基于这个条件,以避免对已经有值的行进行移位,比如在本例中是第13行,其中存在一个新的页面属性

我面临的问题是,移位只发生在页码标记后面的一行,在我的例子中是第9行。第10行和第11行的值仍然为零,这不是我所期望的

这可以使用for循环实现,如下所示:

for i in range(1, len(df)):
    if df['pageflag'][i] == 0:
        df['pageflag'][i] = df['pageflag'][i - 1]
    else:
        df['pageflag'][i] = df['pageflag'][i]

但由于大型数据帧的性能问题,我希望避免这种情况

关于如何以最有效的方式实现这一点,有什么建议吗


Tags: 数据标记dataframedfforshiftnpxml