我试图解决一个问题,我们需要使用ffill和bfill沿着条件。数据框:
A 100 B NULL C NULL D 100 E NULL F 103
输出数据框:
A 100 B 100 C 100 D 100 E NULL F 103
行B和C填充为100,因为A的值= D的值= 100。行E未填充,因为D的值!= F的值有人遇到过这样的问题吗?我尝试使用FFill和BFill。
wmomyfyw1#
您可以计算ffill和bfill,并使用where仅保留相同的值:
ffill
bfill
where
f = df['col2'].ffill() b = df['col2'].bfill() df['new'] = f.where(f.eq(b))
注意:我假设NULL是NaNs,否则先是replace('NULL', np.nan)。输出(为清楚起见,作为新列):
NULL
NaNs
replace('NULL', np.nan)
col1 col2 new 0 A 100.0 100.0 1 B NaN 100.0 2 C NaN 100.0 3 D 100.0 100.0 4 E NaN NaN 5 F 103.0 103.0
1条答案
按热度按时间wmomyfyw1#
您可以计算
ffill
和bfill
,并使用where
仅保留相同的值:注意:我假设
NULL
是NaNs
,否则先是replace('NULL', np.nan)
。输出(为清楚起见,作为新列):