我正在将XML转换为看起来像这样的数据框:
我希望为该页面中的所有文本框复制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]
但是由于大型数据帧的性能问题,我想避免这种情况。
关于如何以最有效的方式实现这一目标的任何建议?
答案 0 :(得分:1)
通过pd.Series.ffill
将NaN
的值转换为df['pageflag'] = df['pageflag'].mask(df['pageflag'] == 0).ffill()
后,可以使用pd.Series.mask
:
{{1}}