是否可以为整行指定ffill?我的意思是,在行中调整一个值[Check]以查看该行是否应该是fforwardfilled。
我的主要目标是保持行完整性(即我只想将整行转发到下一行)。为简单起见,假设每行对应一个事件,如果新事件没有数据(在Val1中),我想从过去的事件中转发数据。我不希望混合来自过去事件的数据,因为我应该注意到,前提条件是,nan值可能是事件的合法值,也应该向前填充。
第一个例子:
Check Val1 Val2 Val3 Val4
0 2.00 3.00 2.00 2.00 3.00
1 2.00 4.00 nan 3.00 4.00
2 2.00 nan nan nan nan
3 2.00 2.00 4.00 3.00 3.00
应该成为
Check Val1 Val2 Val3 Val4
0 2.00 3.00 2.00 2.00 3.00
1 2.00 4.00 nan 3.00 4.00
2 2.00 4.00 nan 3.00 4.00
3 2.00 2.00 4.00 3.00 3.00
并不是:
Check Val1 Val2 Val3 Val4
0 2.00 3.00 2.00 2.00 3.00
1 2.00 4.00 2.00 3.00 4.00
2 2.00 4.00 2.00 3.00 4.00
3 2.00 2.00 4.00 3.00 3.00
第二个例子:
Check Val1 Val2 Val3 Val4
0 2.00 3.00 2.00 2.00 3.00
1 2.00 4.00 nan 3.00 4.00
2 2.00 4.00 nan nan nan
3 2.00 2.00 4.00 3.00 3.00
应保持不变。
用于每列仅替换一个NaN
s - 替换最合适的所有值,然后检查连续的NaN
s,由mask
设置为NaN
s:
df = df.ffill().mask((df.ffill(limit=1) * df.bfill(limit=1)).isnull())
print (df)
0 1 2 3 4
0 2.0 3.0 2.0 2.0 3.0
1 2.0 4.0 NaN 3.0 4.0
2 2.0 4.0 NaN 3.0 4.0
3 2.0 2.0 4.0 3.0 3.0