51993


単純に0から4番目の行を削除しようと考えています。

[code]

    for i in range(5):
        df.drop(i)
    
[/code]

このコードで動作すると思ったのですが、そのあとdfで確認しても変化なしなので参っています。  
ネットであれこれ調べて試行錯誤したのですが、見当がつきません...  
大変初歩的な質問で恐縮ですが、ご教示いただける方がいらっしゃいましたら幸いです。  
どうぞよろしくお願いいたします。


CC BY-SA 4.0
2019-01-14T16:07:48.453
51973
2019-01-15T14:35:02.270
2019-01-15T00:22:43.790
3060
27030
question
python pandas
pandas.DataFrameのdropメソッドをfor文を使って回したいのですが、動作しません


`df.drop()` メソッドは `df` を直接変更はせず行を削除した新たなデータフレームを返すメソッドです。

[code]

    In [1]: import pandas as pd
    
    In [2]: df = pd.DataFrame([[i] for i in range(10)])
    
    In [3]: df2 = df.drop(0)
    
    In [4]: df
    Out[4]:
       0
    0  0  # 1行目が残っている: df に変更はない
    1  1
    2  2
    3  3
    4  4
    5  5
    6  6
    7  7
    8  8
    9  9
    
    In [5]: df2
    Out[5]:
       0
    1  1  # df から 1 行目のみ除いたデータフレームになっている
    2  2
    3  3
    4  4
    5  5
    6  6
    7  7
    8  8
    9  9
    
[/code]

なので1行目から5行目を消すためには `df` を直接操作する(`inplace=True`
と設定する)もしくは行の削除結果を変数に代入するべきだと思います。

[code]

    for i in range(5):
        df.drop(i, inplace=True)
        # または df2 = df.drop(i)
    
[/code]

ちなみにですが、今回のように5行目までをすべて削除するのであれば、 `df2 = df.drop(range(5))` で `for`
を使わずに削除することもできます。


CC BY-SA 4.0
2019-01-15T14:35:02.270
51993
2019-01-15T14:35:02.270
27724
51973
answer