100000行を含むデータフレーム(ratings_base
)があります。私はそれから1行をフィルタリングして、私はそれのための次のコードセグメントを使用しました。私Series
オブジェクトを返しますPandasデータフレームでフィルタリングした後に行を削除します
((ratings_base.loc[ratings_base['user_id'] == 1]).sort_values(by='rating', ascending=0)).iloc[0]
。
user_id 1
movie_id 170
rating 5
Name: 19996, dtype: int64
元のデータフレームオブジェクトからこの行(シリーズオブジェクト)を削除するにはどうすればよいですか?私はデータフレームのドロップ関数を使用することができますが、私はそれのための行インデックスが必要です。選択した行の行インデックスを取得できれば(SeriesオブジェクトのName属性として表示されます)、ドロップできます。
代替案を推奨し、それも私を働かせました。サイドの質問をする。私はそれを落とすために "inplace = True"プロパティを使用しなければなりませんでした。 len(rating_base)をチェックして、それが落ちているかどうかを確認しました。 "inplace = True"プロパティがなければ、長さは100000で、その小道具では99999でした。理由は何ですか? – Malintha
'df.drop(...、inplace = True)'を呼び出すと、 'drop'は' df'を修正して 'None'を返します。 'df.drop(...)'を呼び出すと、 'df'は変更されず、' drop'は新しいDataFrameを返します。したがって、 'df'の値を変更するには、割り当てを使う必要があります:' df = df.drop(...) '。私は 'inplace'という名前が誤解を招くので、後者を好む(' inplace = True'を避けてください)。一時的な記憶を保存しないという意味で真のインプレース操作ではありません。 'inplace'を避ける他の理由については、http://stackoverflow.com/a/22533110/190597も参照してください。 – unutbu