是否可以为整行指定填充?我的意思是,以该行中的一个值[Check]为条件,以查看该行是否应该向前填充。
我的主要目标是保持行的完整性(即,我只想将整个行向前填充到下一行)。为了简单起见,假设每一行都对应一个事件,如果新事件没有数据(在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
应保持不变。
答案 0 :(得分:1)
仅用于替换每列一个NaN
s-替换所有值,然后检查连续的NaN
,它们由mask
设置为NaN
s:< / p>
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