2016-09-06 11 views
2

データフレームの先頭にゼロを持つデータフレームがあります。これらのゼロは、NAとして機能します。他の値が現れるまで削除したいと思います。Pandas Dataframeその値が変更されるまで特定の値を持つ行を削除します

だから、私はこのデータフレームをしたいと思います:列「B」の最初の5列にゼロが含まれているため

df_ 
    Out[114]: 
        A   B   C 
    2016-08-27 -0.263963 0.000000 0.693514 
    2016-08-28 -0.085663 0.000000 -0.715981 
    2016-08-29 1.408283 0.000000 2.513716 
    2016-08-30 -0.591532 0.000000 -1.468227 
    2016-08-31 -0.973261 0.000000 0.848670 
    2016-09-01 0.694384 -0.214615 0.561752 
    2016-09-02 -1.468527 0.259413 1.195574 
    2016-09-03 -1.471785 0.006788 0.688078 
    2016-09-04 -0.817770 0.453037 0.632851 
    2016-09-05 1.129863 0.000000 -0.296562 

だけ上位5行をドロップしますが、(最後のものを含む)、残りを維持します。

+0

申し訳ありませんが、あなただけのだけのDFをスライスするか、有効な行を取得するまで、動的に上位N行を削除する方法を求めていますか? – EdChum

+0

先頭のN行を削除して、先頭にゼロが入っている列にゼロ以外の値がすべて入るようにします。 – alexshchep

答えて

3

すべての行がallaxis=10に等しくない場合は、我々はDFをマスクし、first_valid_indexを呼び出し、DFをスライスするためにこれを使用するためにこれを使用し、テストすることができます。ここ

In [40]: 
df.loc[df[(df != 0).all(axis=1)].first_valid_index():] 

Out[40]: 
        A   B   C 
2016-09-01 0.694384 -0.214615 0.561752 
2016-09-02 -1.468527 0.259413 1.195574 
2016-09-03 -1.471785 0.006788 0.688078 
2016-09-04 -0.817770 0.453037 0.632851 
2016-09-05 1.129863 0.000000 -0.296562 

はより出力されます内部テスト:

In [37]: 
(df != 0).all(axis=1) 

Out[37]: 
2016-08-27 False 
2016-08-28 False 
2016-08-29 False 
2016-08-30 False 
2016-08-31 False 
2016-09-01  True 
2016-09-02  True 
2016-09-03  True 
2016-09-04  True 
2016-09-05 False 
dtype: bool 
+0

ありがとう!私が探していたもの – alexshchep

関連する問題