gpt4 book ai didi

python - 使用条件移位获取上一行

转载 作者:行者123 更新时间:2023-12-01 09:09:27 25 4
gpt4 key购买 nike

我正在将 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]

但由于大型数据帧的性能问题,这是我想避免的事情。

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

最佳答案

您可以使用pd.Series.ffill通过 pd.Series.mask0 值转换为 NaN 后:

df['pageflag'] = df['pageflag'].mask(df['pageflag'] == 0).ffill()

关于python - 使用条件移位获取上一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51783267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com