DataFrameにN/A値を選択的に入力したいと思います。特に、カラム内に一連の結果的なナンセンスがある場合、ナノシーケンスの長さが指定されたスレッショルドを下回っている場合にのみ、それらを先行するnon-nan値で埋めるようにします。例えば、閾値が3である場合、3以下のカラム内シーケンスは、先行する非ナノ値で満たされるが、4以上のシーケンスはそのまま残される。入力データフレームは、私は出力になりたいパンダでfillna()を選択的に使用する
2 5 4
nan nan nan
nan nan nan
5 nan nan
9 3 nan
7 9 1
であれば、ある
:
2 5 4
2 5 nan
2 5 nan
5 5 nan
9 3 nan
7 9 1
DATAFRAMEに適用fillna
機能は、方法および制限のオプションがあります。しかし、これらは残念ながら課題を達成するには不十分です。私はmethod='ffill'
とlimit=3
を指定しようとしましたが、これは上記のように選択的ではなく、任意のシーケンスの最初の3つのナンバーを埋めます。
これは、いくつかの条件文を使って列ごとにコード化することができますが、何かもっとPythonicがあるはずです。これを達成するための効率的な方法に関する提案はありますか?
@DSMありがとうございます。それは本当に素晴らしいソリューションです。私たちが探しているものを実際に提供しています。ちょうど1つのコメント:それはかなり遅いです。私は、サイズ530x11500のDataFrameには3の制限があり、それは約32秒かかりました。したがって、このソリューションは素晴らしいですが、実行時間を短縮する代替ソリューションが高く評価されています。 – splinter
非常に高速です!ウォールタイム:9.01秒 – splinter