我想以选择性的方式在数据帧中填充N/A值。特别是,如果列中有一个一致的nan序列,我希望用前面的非nan值填充它们,但前提是nan序列的长度低于指定的阈值。例如,如果阈值为3,则3或更少的列内序列将填充前一个非nan值,而4个或更多nan的序列将保持原样。在
也就是说,如果输入数据帧是
2 5 4
nan nan nan
nan nan nan
5 nan nan
9 3 nan
7 9 1
我希望输出是:
^{pr2}$当应用于数据帧时,fillna
函数具有方法和限制选项。但不幸的是,这些还不足以完成这项任务。我试图指定method='ffill'
和limit=3
,但是这会填充任何序列的前3个nan,而不是像上面描述的那样有选择性地。在
我想这可以通过使用一些条件语句一列一列地进行编码,但是我怀疑肯定有更像python的东西。有什么建议可以有效地解决这个问题吗?在
在大熊猫身上,与相邻群体合作还是有点尴尬。。或者至少我不知道一个巧妙的方法来做到这一点,这根本不是一回事。:-)
获取所需内容的一种方法是使用compare cumsum groupby模式:
好吧,另一个我不喜欢的选择,因为它太棘手了:
^{pr2}$这不使用任何
groupby
工具,因此应该更快。注意,另一种方法是手动(使用移位)确定要填充的元素,因为它们是一组长度为1、2或3的元素。在相关问题 更多 >
编程相关推荐