2016-09-06 61 views
2

我有一個數據幀在數據幀的頂部有零。這些零點充當了NAs。我想刪除它們,直到其他值開始出現。熊貓數據框刪除具有一定值的行,直到該值發生變化

所以,我想這個數據幀:

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行,但保留其餘的(包括最後的),因爲列「B」包含在前五排零。

+0

對不起,你只是問如何只切片的DF或動態刪除前N行,直到你得到一個有效的行? – EdChum

+0

刪除前N行,直到我在開始處爲零的列中得到所有非零值 – alexshchep

回答

3

您可以測試是否所有的行不等於0allaxis=1,我們用它來掩蓋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

相關問題