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)
複数の条件
(見るブールインデックス)
演算子は、
|
foror
、&
forand
、および~
forですnot
。これらは括弧を使用してグループ化する必要があります。
列「スコア」が 50 未満かつ 20 を超えるすべての行を削除するには
df = df.drop(df[(df.score < 50) & (df.score > 20)].index)