2016-05-13 8 views
2

これは簡単な修正であると私は考えています。私は、次のようなデータフレームを持っている:パンダのデータフレームの列に「False」が含まれている行を削除してください

  index    c1  c2   c3 
2015-03-07 01:27:05  False False  True 
2015-03-07 01:27:10  False False  True 
2015-03-07 01:27:15  False False  False 
2015-03-07 01:27:20  False False  True 
2015-03-07 01:27:25  False False  False 
2015-03-07 01:27:30  False False  True 

私はc3Falseを含むすべての行を削除したいです。 c3dtype=boolです。私は一貫して問題に直面しています。なぜなら、これはブール値であり、文字列/ int/etcではないからです。

ありがとうございました!

+0

に評価された行を保つことである行を削除しますか? –

+0

どのようにファイルを処理していますか? – aBiologist

答えて

5

さて、質問のタイトルと質問自体は正反対ですが、:

df = df[df['c3'] == True] # df will have only rows with True in c3 
13

パンダは本当にきちんとした、簡単な方法でブール値を扱う:

df = df[df.c3] 

あなたはフィルタリングしているときdf[...]を使用するデータフレームでは、(df.x > 2のような)ブール値を返す関数を書くことがよくあります。しかし、この場合、列はすでにブール値であるため、df.c3を単独で入力すると、すべての行がTrueになります。

逆の(質問の元のタイトルとして暗示されているように)df[~df.c3]を使用すると、~がブール値を反転します。

1

ソリューション

df.drop(df[df['c3'] == False].index, inplace=True) 

これは、明示的に'c3'Falseだけでなく、あなたはいくつかのコードを提供することができTrue

関連する問題