私はこのように見えるCSVを持っています(そして、 read_csv()
のパンダのDataframeに持ってきても同じように見えます)。パンダシリーズの前の「行」の値を使用
Iは、以下の論理に従ってカラムad_requestsの値を更新する:
所与の行について、ad_requestsの値を有する場合、単独でそれを残します。それ以外の場合は、の値を前の行の値ad_requestsから、前の行の値の表示値に設定します。だから、最初の例では、我々はで終わるしたいと思います:
私は部分的にそこに着く:
df["ad_requests"] = [i if not pd.isnull(i) else ??? for i in df["ad_requests"]]
そして、私は動けなくなる場所です。 else
の後、パンダが使われる方法ではないことは分かっていますが、私は元に戻って前の行にアクセスしたいと思います。 もう1つ注意すべきことは、行は常に列であり、列はad_tag_nameで3つにグループ化されることです。もし私がpd.groupby["ad_tag_name"]
なら、私はこれをlist
に変えてスライスとインデックス作成を開始できますが、もう一度、これはパンダで(もっと多くのことがあるので)これを行うためのよりよい方法でなければならないと思います。
のPython:2.7.10
パンダ:0.18.0
ヒント: 'df.ad_requests.ffill() - df.impressions.cumsum()。shift()'は途中で途絶えることがあります。 –
興味深い。このアプローチを使用すると、最初の数行の空行では値が*わずかにオフになり、最終的には負になります。http://imgur.com/a/k7faf – Pyderman
これはヒントであり、完全な解決策ではありません。 ad_requestsが0でないか、そのようなときに、cumsumを0にリセットする必要があります。 –