条件式に基づいてパンダデータフレームから行を削除する方法 [重複] 質問する

条件式に基づいてパンダデータフレームから行を削除する方法 [重複] 質問する

pandas DataFrame があり、特定の列の文字列の長さが 2 より大きい行を削除したいと考えています。

私はこれを実行できると期待しています(この答え):

df[(len(df['column name']) < 2)]

しかし、次のエラーが発生します:

KeyError: u'no item named False'

何が間違っているのでしょうか?

df.dropna()(注: を使用してany を含む行を削除できることはわかっていますNaNが、条件式に基づいて行を削除する方法はわかりませんでした。)

ベストアンサー1

この質問の元のタイトル「条件式に基づいてパンダデータフレームから行を削除する方法」(これは必ずしも質問者の問題ではないが、この質問に遭遇した他のユーザーの役に立つかもしれないと理解しています)に直接答えるには、これを行う1つの方法は、落とす方法:

df = df.drop(some labels)
df = df.drop(df[<some boolean condition>].index)

列「スコア」が 50 未満のすべての行を削除するには:

df = df.drop(df[df.score < 50].index)

インプレースバージョン(コメントで指摘されているとおり)

df.drop(df[df.score < 50].index, inplace=True)

複数の条件

(見るブールインデックス

演算子は、|for or&for and、および~forですnot。これらは括弧を使用してグループ化する必要があります。

列「スコア」が 50 未満かつ 20 を超えるすべての行を削除するには

df = df.drop(df[(df.score < 50) & (df.score > 20)].index)

おすすめ記事